Next: Unreadable data objects, Previous: Structures, Up: Standards
All functions in ECL are either compiled into bytecodes to be interpreted, or they are translated into C and then compiled using a native C compiler. Interpreted functions are printed using the formats
#<interpreted-function @var{name}> #<interpreted-function @code{address}>Compiled functions (including compiled macro-expansion functions) are printed in the following formats.
#<compiled-function @var{name}> #<compiled-closure nil>
The output of (symbol-function
fun)
is a list, is either a
function object if 'fun
is has a function definition,
(macro . function-object)
if 'fun
is a macro, and 'special
if 'fun
is a special form.
ECL usually drops the source code of a function unless the global
variable si:*keep-definitions* was true when the function was
translated into bytecodes. Therefore, if you wish to use
#'compile
and #'disassemble
on defined functions, you
should issue (setq si:*keep-definitions* t)
at the beginning of
your session.
Common-Lisp constants related to functions have the following values in ECL.
call-arguments-limit = 64 lambda-list-keywords = (@optional{} @rest{} @keys{} @allow{} @aux{} &whole &environment &body) lambda-parameters-limit = 64 multiple-values-limit = 32
Refer to [see Steele:84] for their meanings.