$Revision: 5.0.2.2 $
Package: EXCL
Arguments: (name lambda-expression)
The macro definition for this extension is approximately:
(defmacro excl:named-function (name function)
(declare (ignore name)) `(function ,function))
When compiling a named-function form, the compiler treats the form just like a function form, except that the name is used if possible in the resulting function. This is especially useful for closures of a particular kind, as in the following example:
user(1): (defun get-one-arg-frobber (ix)
(named-function
frobber (lambda (arg) (frob-by-index ix arg))))
get-one-arg-frobber
user(2): (compile *)
Warning: While compiling these undefined functions were referenced: frob-by-index.
get-one-arg-frobber
nil
nil
user(3): (get-one-arg-frobber 10)
#<Closure frobber @ #x2065dea9>
user(4):
Note that the name of the closure is taken from the named-function form. Contrast that with the following definition using the more traditional function form:
user(7): (defun get-one-arg-frobber (ix)
(function
(lambda (arg)
(frob-by-index
ix arg))))
get-one-arg-frobber
user(8): (compile *)
Warning: While compiling these undefined functions were referenced: frob-by-index.
get-one-arg-frobber
nil
nil
user(9): (get-one-arg-frobber 12)
#<Closure (:internal get-one-arg-frobber 0) @ #x20664fa1>
user(10):
The general documentation description is in introduction.htm. The index is in index.htm.
Copyright (C) 1998-1999, Franz Inc., Berkeley, CA. All Rights Reserved.