kiyoka.2009_07_05 RSSPLAIN

Related pages: !kiyoka.blog.list !kiyoka.blog.2009_07
555555555555555555555555555555555555555
5

[Nendo] quasiquoteが動いた日

5

私がRubyで書いているLisp方言、 Nendoの開発状況続き。

5

 

5

ついに、ついに、quasiquoteが動いた!

5

(※quasiquoteは、ほとんどのLisp系言語がサポートしています。リスト内包表現に代表されるリストの部分展開をサポートする機能で、 `  ,  ,@  の3つの記号を使います)

5

もうすぐ動くかも、という日々が何日も続いていたので、この上ない達成感がある。

5
 _MG_3370
5

Toy言語とはいえ、ちゃんと遊べる様にするためにはちゃんと実装しておかないとね。

5

 

5

これが、現段階での quasiquoteの実行結果。

5
nendo> `(1 2 3)
5
(1 2 3)
5
nendo> (set! a 3)
5
3
5
nendo> `(1 2 ,a)
5
(1 2 3)
5
nendo> `(1 2 ,@(list a))
5
(1 2 3)
5
nendo> `(1 ,@(list 2 a))
5
(1 2 3)
5
nendo> (set! a 11)
5
11
5
nendo> `,a
5
11
5
nendo> ``,a
5
`,a
5

 

5

R6RSのスペック R6RS:翻訳:R6RS:11.17 QuasiquotationEXT に書いてあるサンプルも一応動いている。

5
nendo> `(list ,(+ 1 2) 4)
5
(list 3 4)
5
nendo> (let ((name 'a)) `(list ,name ',name))
5
(list a 'a)
5
nendo> `(a `(b ,(+ 1 2) ,(foo ,(+ 1 3) d) e) f)
5
(a `(b ,(+ 1 2) ,(foo 4 d) e) f)
5

 

5

これからRubyとの連携にも手をつけて、どこかでプレゼンできるようなネタを仕込んでいこう。

5

育児中の身なので Shibuya.lisp テクニカルトーク#3EXT には行けなかったけど、今度は何とか都合をつけてイベントに出かけて発表したい。

5

 

5

...comment disabled...