Next: 13.2 バッククオート
Up: 13 マクロ
Previous: 13 マクロ
マクロの定義には,defmacroを使います.
(defmacro マクロ名 引数 式)
という形になります.たとえば,
(when 条件 式1 ... 式N )
というマクロ when を定義するとします.
これは,条件が成り立てば,式1から式Nまでを順に実行するという
ものだとします.
(defmacro when (condition &rest body)
(list 'if condition
(cons 'progn body)))
このように,マクロ定義の引数には,
関数定義のように,&rest, &optional, &keyパラメータも使うこ
とができます.
macro定義されているかどうかを調べる関数として, macro-functionという関
数があります.
さらに,defmacro式の引数には,マクロ・フォームの分解のパターンを書くこ
とができるようになっています.例えば,when式では,
(when 条件 . 本体)
というパターンになるので,whenより後ろをdefmacroの引数パターンとして
書けるようになっています.
つまり,
(defmacro when (condition . body)
(list 'if condition
(cons 'progn body)))
と書くことができます.
generated through LaTeX2HTML. M.Inaba 平成18年5月7日