M-99 マクロ99問
http://common-lisp-users.jp/index.cgi?M-99
問2:INC1を作成せよ
テーマ:変数の捕捉
(let ((x 0)) (inc1 x) x) ≡ (let ((x 0)) (setq x (+ x 1))) ;=> 1
解:
CL-USER> (defmacro inc1 (x) `(setq ,x (+ ,x 1))) INC1 CL-USER> (let ((x 0)) (inc1 x) x) 1 CL-USER> (let ((x 10)) (inc1 x) x) 11
0 件のコメント:
コメントを投稿