戻り値
戻り値はリストの展開形(インタプリタはマクロから戻った後これを評価する)。
関数:macroexpand(マクロの展開形を返す)
引数に関する注意
引数は評価されない特殊形式である。
マクロ中での let 使用には注意すること。マクロ外で同名の変数がある場合,マクロ中ではマクロ展開形の定義が優先する。
make-symbol を使いインターンしていないシンボルを束縛し,その変数を "," で使うことで回避する。インターンしていないので,マクロ外では参照されない。
利点と欠点
利点
関数呼び出しがなく,高速。
コンパイル時にどのコードを使うか制御でき,汎用的な処理を短かく記述しやすい。
制御構造を評価することで,無駄な処理を省きやすい。ただし,コンパイル時に決定可能な変数と,そうでない変数の区別をする必要がある。
欠点
比較的メモリ使用量,コンパイル後のコード量が増える。