|Version 1 (modified by ehuelsmann, 5 years ago) (diff)|
As described elsewhere, the LispObject is the base component of which the Lisp world in ABCL has been built. Everything is a LispObject. LispObject has 10 methods which might get called when evaluating that "Lisp object": they're all called execute and implement the zero - nine argument forms and the array argument form (which allows for non-predetermined numbers of arguments).
When an object is evaluated one of the appropriate forms of the execute method is called. Code deeply nests calls to execute() methods, because the evaluation of a function inherently calls execute() methods to call other functions.
This system leads to large stack sizes: Java doesn't allow tail call elimination.
maybe there's more to note about system execution