chickadee » miscmacros » eval-when

(eval-when (SITUATION ...) EXP ...)syntax

Controls evaluation/compilation of subforms. SITUATION should be one of the symbols eval, compile or load. When encountered in the evaluator, and the situation specifier eval is not given, then this form is not evaluated and an unspecified value is returned. When encountered while compiling code, and the situation specifier compile is given, then this form is evaluated at compile-time. When encountered while compiling code, and the situation specifier load is not given, then this form is ignored and an expression resulting into an unspecified value is compiled instead.

The following table should make this clearer:

In compiled codeIn interpreted code
evalignoreevaluate
compileevaluate at compile timeignore
loadcompile as normalignore