次: Byte-Code Objects, 前: Dynamic Loading, 上: Byte Compilation
プログラムのコンパイル時に評価されるようなコードを書くための機能です。
このフォームは、コンパイルしたり実行したり (コンパイルしてあってもしてなくても)するときに bodyを評価するように印を付ける。
bodyを別のファイルに収め、そのファイルを
require
で参照しても 同じ結果を得ることができる。 bodyが大きい場合には、そのほうが好ましい。
このフォームは、コンパイルしたプログラムをロードするときではなく、 プログラムのコンパイル時にbodyを評価するように印を付ける。 コンパイラが評価した結果は、コンパイルしたプログラム内に定数として現れる。 ソースファイルをコンパイルせずにロードすると、 bodyを普通どおり評価する。
Common Lispに関した注意: トップレベルでは、 Common Lispの
(eval-when (compile eval) ...)
の常套句に似ている。 それ以外の箇所では、Common Lispの`#.'リーダマクロは (解釈実行時ではなければ)eval-when-compile
が行うことに近い。