lispCommon Lisp のマクロの背後で何が行われているのかがいまいち分からなかったので、少し詳しく見ていくことにした。On Lisp の7章 マクロ には、defmacro と macroexpand-1 の内部処理を Lisp でエミュレートしたコードが紹介されている。 (defmacro our-expander (name) `(get ,name 'expander)) (defmacro our-defmacro (name parms &body body) (let ((g (gensym))) `(progn (setf (our-expander ',name) #'(lambda (,g) (block ,name (destructuring-bind ,parms (cdr ,g) ,@body)))) ',name))) (defun our-macro