2011/12/22

Re: lispのマクロ定義について

最初の例は動かないんじゃないかなー。取りあえずmacroexpandしたらいいかと。この辺はLOLの評価の梯子(だっけ?)の話がわかりやすかった。
[1]> (defmacro inc! (var)`(setq var (1+ var)))
INC!
[2]> (let ((x 1))(macroexpand '(inc! x)))
(SETQ VAR (1+ VAR)) ;
T
[3]> (defmacro inc! (var)`(setq ,var (1+ ,var)))
INC!
[4]> (let ((x 1))(macroexpand '(inc! x)))
(SETQ X (1+ X)) ;
T
[5]> 
On LispLOLもせっかくWebで読めるので参考にしてはどうでしょう。 こんなとこでドヤ顔しながら回答しても無意味だけど。
On Lisp

0 件のコメント:

コメントを投稿