(def-scheme-macro let (bindings &rest body)
`((lambda ,(mapcar #'car bindings) ,@body)
,@(mapcar #'cadr bindings)))
というマクロ定義で,局所変数
定義を与えた関数定義になります.
<cl> (scheme-macro-expand '(let ((a 1)) (list a)))
((LAMBDA (A) (LIST A)) 1)
<cl> (comp-show '(let ((a 1)) (list a)))
ARGS 0
CONST 1
FN
ARGS 1
LVAR 0 0 ; A
GVAR LIST
CALL 1
RETURN
CALL 1
RETURN