Next: Let Calls, Up: Local Call [Contents][Index]
Local call is used when a function defined by defun
calls itself. For
example:
(defun fact (n) (if (zerop n) 1 (* n (fact (1- n)))))
This use of local call speeds recursion, but can also complicate
debugging, since trace
will only show the first call to
fact
, and not the recursive calls. This is because the
recursive calls directly jump to the start of the function, and don’t
indirect through the symbol-function
. Self-recursive local
call is inhibited when the :block-compile
argument to
compile-file
is nil
(see compile-file-block.)