compile
calls the compiler to translate a lambda expression into a code vector containing an equivalent sequence of host specific machine code. A compiled function typically runs between 10 and 100 times faster. It is generally worth compiling the most frequently called Lisp functions in a large application during the development phase. The compiler detects a large number of programming errors, and the resulting code runs sufficiently faster to justify the compilation time, even during development.
Warning messages are printed to *error-output*
. Other messages are printed to *standard-output*
.
definition and the return values are as specified for Common Lisp. Note that name may be a list not of the form (setf
symbol)
, which is an extension to Common Lisp.
compile
also supports a LispWorks-specific extension allowing compile
to compile an arbitrary form. When definition is not supplied and name is a list not of the form (setf
symbol)
, compile
compiles it as if by compile-file but without any file related processing and does it in-memory, so it has also the same effect as loading. This has a similar effect to compiling a definition in the LispWorks Editor tool, except that there is no source recording. Multiple forms can be compiled in one call by wrapping them with progn
. When compile
is used this way it always returns nil
.
A compiled function object may be returned. Such compiled function objects are not printable (but see disassemble) other than as #<Function FOO
hex-address>
.
In LispWorks 5.1 and previous versions, warning messages are printed to *standard-output*
.
(defun fn (...) ...) ; interpreted definition for fn
(compile 'fn) ; replace with compiled
; definition
(compile nil '(lambda (x) (* x x)))
; returns compiled squaring function
(compile 'cube '(lambda (x) (* x x x)))
; defun and compile in one
See declare for a list of the declarations that alter the behavior of the compiler.
LispWorks User Guide and Reference Manual - 13 Feb 2015