Subject: Re: Allegro CL groks it. Re: Repeated lambda variables
From: Erik Naggum <erik@naggum.no>
Date: 1999/01/10
Newsgroups: comp.lang.lisp
Message-ID: <3124962600686923@naggum.no>

* Marco Antoniotti <marcoxa@copernico.parades.rm.cnr.it>
| Moreover, I have the following doubt. In CMUCL it turns out that
| 
| * ((lambda (x) (1+ x)) 3)
| 4
| 
| However, this is puzzling to me.

  this has been meaningful since CLtL1 and way before then.  it's called a
  `lambda form' in the standard.  

lambda form n. a form that is a list and that has a first element which is
a lambda expression representing a function to be called on arguments which
are the result of evaluating subsequent elements of the lambda form.

  3.1.2.1.2.4 Lambda Forms reads:

A lambda form is similar to a function form, except that the function name
is replaced by a lambda expression.

A lambda form is equivalent to using funcall of a lexical closure of the
lambda expression on the given arguments.  (In practice, some compilers are
more likely to produce inline code for a lambda form than for an arbitrary
named function that has been declared inline; however, such a difference is
not semantic.)

  http://www.harlequin.com/books/HyperSpec/Body/sym_lambda.html has the
  specification of the symbol LAMBDA.

| Any enlightening comments on the matter? Am I missing something from
| the specification?

  not any more.  :)

#:Erik