Hatena::Groupcadr

わだばLisperになる このページをアンテナに追加 RSSフィード

2004 | 12 |
2005 | 01 | 02 | 07 | 10 | 11 |
2006 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 11 |

2007-11-28


はてなグループでLisp関係のグループを作ってみました。

| 22:51 | はてなグループでLisp関係のグループを作ってみました。 - わだばLisperになる を含むブックマーク はてなブックマーク - はてなグループでLisp関係のグループを作ってみました。 - わだばLisperになる

はてなグループという機能があることを知ったので早速Lisp関係のグループを探してみました。

既に一つlispグループというグループがあるのですが、ポール・グレアム氏のANSI Common Lispをxyzzyを使って読むグループということで、Lisp関係とはいえあまり勝手なことを書き散らかす訳にもいかない気がしたので、自分で作ってみることにしました。2番目なので、名前は、cadrグループです。

このグループはLisp的なことであれば特に限定するものではありません。

個人的にはキーワード機能を利用して関数のクロスリファレンス的なものが作れないかを試してみたいと思っています。

また、処理系のインストール記事や、最近のCommon Lisp開発環境ではなくてはならないSLIMEASDF周辺の情報も集められたら良いなと思っています。

自分自身いまいち、はてなグループの利用方法が分かっていないのですが、どなたでも参加できるように設定したつもりですので、ご興味ありましたらお気軽に参加して頂ければと思います。

String#to_procの真似ごと

| 00:36 | String#to_procの真似ごと - わだばLisperになる を含むブックマーク はてなブックマーク - String#to_procの真似ごと - わだばLisperになる

Matzにっきさん経由で、String#to_procというアイディアを知りました。

Rubyは全く書けませんが、何だか面白そうなので真似して遊んでみました。

元記事だともっと多彩なことができるようですが、複雑になると大変そうなので端折りに端折って気分だけ。

;; to-proc
(defmacro to-proc ((&rest args) string)
  (let ((fn (gensym "FN-")))
    `(let ,args
       (macrolet ((,fn () (read-from-string ,string)))
	 (,fn)))))
;; 動作
(to-proc ((x 3)) "(print x)")
;-> 3

(defun square (x)
  (to-proc ((x x)) "(* x x)"))

(square 3)
;=> 9

(to-proc ((x 2) (y 3)) "(+ x (* 2 y))")
;=> 8

(to-proc ((x 3) (y 2)) "(+ x (* 2 y))")
;=> 7

(mapcar (lambda (x y) (to-proc ((x x) (y y)) "(+ x (* 2 y))")) 
	'(1 2 3) '(10 20 30))

;=> (21 42 63)

to_procをletみたいな形式で実現するのは、ちょっと違うのかなと思いつつ、どっちにしろ引数の指定はすることになるようなので安直にletみたいな感じで…。

使いたい場面がありそうな、なさそうな…。