Next: , Previous: Dynamic Loading, Up: Byte Compilation


15.5 コンパイル時の評価

プログラムのコンパイル時に評価されるようなコードを書くための機能です。

— Special Form: eval-and-compile body

このフォームは、コンパイルしたり実行したり (コンパイルしてあってもしてなくても)するときに bodyを評価するように印を付ける。

bodyを別のファイルに収め、そのファイルをrequireで参照しても 同じ結果を得ることができる。 bodyが大きい場合には、そのほうが好ましい。

— Special Form: eval-when-compile body

このフォームは、コンパイルしたプログラムをロードするときではなく、 プログラムのコンパイル時にbodyを評価するように印を付ける。 コンパイラが評価した結果は、コンパイルしたプログラム内に定数として現れる。 ソースファイルをコンパイルせずにロードすると、 bodyを普通どおり評価する。

Common Lispに関した注意: トップレベルでは、 Common Lispの(eval-when (compile eval) ...)の常套句に似ている。 それ以外の箇所では、Common Lispの‘#.’リーダマクロは (解釈実行時ではなければ)eval-when-compileが行うことに近い。