Common Lisp the Language, 2nd Edition
Next: Compilation
Environment Up: The
Compiler Previous: Compiler
Diagnostics
X3J13 voted in June 1989 (COMPILED-FUNCTION-REQUIREMENTS) to impose
certain requirements on the functions produced by the compilation
process.
If a function is of type compiled-function
, then all
macro calls appearing lexically within the function have already been
expanded and will not be expanded again when the function is called. The
process of compilation effectively turns every macrolet
or
symbol-macrolet
construct into a progn
(or a
locally
) with all instances of the local macros in the body
fully expanded.
If a function is of type compiled-function
, then all
load-time-value
forms appearing lexically within the
function have already been pre-evaluated and will not be evaluated again
when the function is called.
Implementations are free to classify every function as a
compiled-function
provided that all functions satisfy the
preceding requirements. Conversely, it is permissible for a function
that is not a compiled-function
to satisfy the preceding
requirements.
If one or more functions are defined in a file that is compiled with
compile-file
and the compiled file is subsequently loaded
by the function load
, the resulting loaded function
definitions must be of type compiled-function
.
The function compile
must produce an object of type
compiled-function
as the value that is either returned or
stored into the symbol-function
of a symbol argument.
Note that none of these restrictions addresses questions of the
compilation technology or target instruction set. For example, a
compiled function does not necessarily consist of native machine
instructions. These requirements merely specify the behavior of the type
system with respect to certain actions taken by compile
,
compile-file
, and load
.
Next: Compilation
Environment Up: The
Compiler Previous: Compiler
Diagnostics
AI.Repository@cs.cmu.edu