MacroPackage: exclToCDocOverviewCGDocRelNotesFAQIndexPermutedIndex
Allegro CL version 8.2
Unrevised from 8.1 to 8.2.
8.1 version

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-2016, Franz Inc. Oakland, CA., USA. All rights reserved.
This page was not revised from the 8.1 page.
Created 2010.1.21.

ToCDocOverviewCGDocRelNotesFAQIndexPermutedIndex
Allegro CL version 8.2
Unrevised from 8.1 to 8.2.
8.1 version