MacroPackage: exclToCDocOverviewCGDocRelNotesIndexPermutedIndex
Allegro CL version 6.1
Unrevised

named-function

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): 

Copyright (c) 1998-2001, Franz Inc. Berkeley, CA., USA. All rights reserved.
Documentation for Allegro CL version 6.1 update # 1. This page was not revised.
Created 2001.12.15.

ToCDocOverviewCGDocRelNotesIndexPermutedIndex
Allegro CL version 6.1
Unrevised