次: , 前: Dynamic Loading, 上: Byte Compilation


15.5 コンパイル時の評価

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

— 特殊型: eval-and-compile body

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

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

— 特殊型: eval-when-compile body

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

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