GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/elisp/Simple-Macro.html ・ emacs-doc.conao3.com

14.1 マクロの簡単な例

C言語の++演算子のように、変数の値をインクリメントするLispの構文を定義したいとしましょう。(inc x)と記述して、(setq x (1+ x))と同じ効果を得たいと考えます。これを実現するマクロ定義がこちらです:

(defmacro inc (var)
   (list 'setq var (list '1+ var)))

これを (inc x) で呼び出すと、引数 var はシンボル x となり、関数の場合のように x の 値 になるわけではありません。マクロの本体ではこれを用いて展開結果を構築し、その結果は (setq x (1+ x)) となります。マクロ定義がこの展開結果を返すと、Lisp はそれを評価し、これにより x がインクリメントされます。

関数: macrop object

この述語は、引数がマクロであるかどうかを判定し、そうであれば t を、そうでなければ nil を返します。