マクロ

マクロは、言語構造を拡張するために役立つメソッドである。 マクロが呼び出されたとき、引数は評価されずに マクロの本体(マクロ拡張関数)へ受け渡される。 それから、マクロ拡張関数は、引数を拡張し、新しい書式を返す。 結果となった書式は、マクロの外側で再び評価される。 引数のリストにマクロまたは特殊書式を用いるとエラーになる。 macroexpand関数は、マクロ展開のために使用することができる。

インタプリタのときマクロはゆっくりと実行されるが、 コンパイルすることにより実行速度の向上を図ることができる。 なぜなら、マクロ展開はコンパイル時に一度だけ行われ、 実行時にそのオーバーヘッドは残らない。 しかし、マクロ関数の中におけるevalあるいはapplyの呼出は、 インタプリタの実行とコンパイル後の実行との間に違う結果をもたらす。



2016-04-05