4.2. Function types

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 fun) is one of the following:

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 4.1 we list all Common Lisp values related to the limits of functions.

Table 4.1. Function related constants

call-arguments-limit65536
lambda-parameters-limitcall-arguments-limit
multiple-values-limit64
lambda-list-keywords(&optional &rest &key &allow-other-keys &aux &whole &environment &body)