評価対象のリストの先頭要素がマクロオブジェクトである場合、そのリストはマクロ呼び出しとなります。マクロ呼び出しが評価される際、リストの残りの要素は初期状態では評価されません。代わりに、これらの要素自体がマクロの引数として使用されます。マクロ定義では、元の形式に代わって評価される、マクロの展開と呼ばれる置換形式が計算されます。展開形式は、自己評価定数、シンボル、あるいはリストなど、どのような形式であっても構いません。もし展開形式自体がマクロ呼び出しである場合、別の形式が得られるまで、この展開プロセスが繰り返されます。
マクロ呼び出しの通常の評価は、展開結果の評価をもって終了します。ただし、他のプログラムもマクロ呼び出しを展開するため、それらが展開結果を評価する場合もあればそうでない場合もあり、マクロ展開が直ちに、あるいはそもそも評価されるとは限りません。
通常、引数式はマクロ展開の計算過程としては評価されず、代わりに展開の一部として現れるため、展開が評価される際に計算されます。
例えば、以下のように定義されたマクロがあるとします。
(defmacro cadr (x) (list 'car (list 'cdr x)))
(cadr (assq 'handler list))
のような式はマクロ呼び出しであり、その展開は以下の通りです:
(car (cdr (assq 'handler list)))
展開に引数 (assq 'handler list) が現れることに注意してください。
Emacs Lispマクロの詳細な説明については、マクロを参照してください。