2011年1月23日日曜日

M-99 Q2


このエントリーをはてなブックマークに追加


LISPど素人が挑むM-99

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 件のコメント:

コメントを投稿