Functions in ECL can be of two types: they are either compiled to
bytecodes or they have been compiled to machine code using a lisp to C
translator and a C compiler. To the first category belong function loaded
from lisp source files or entered at the toplevel. To the second category
belong all functions in the ECL core environment and functions in files
processed by compile
or
compile-file
.
The output of (symbol-function
is a list, is either a function
object if fun
)'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.
In Table 3.1 we list all Common Lisp values related to the limits of functions.
Table 3.1. Function related constants
call-arguments-limit | 65536 |
lambda-parameters-limit | call-arguments-limit |
multiple-values-limit | 64 |
lambda-list-keywords | (&optional &rest &key &allow-other-keys &aux
&whole &environment &body) |