next up previous
Next: 13.2 バッククオート Up: 13 マクロ Previous: 13 マクロ

13.1 マクロの定義

マクロの定義には,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日