mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-25 07:28:20 +00:00
Note that lex bound lambda forms are not self-quoting (Bug#33199)
* doc/lispref/functions.texi (Anonymous Functions): * lisp/subr.el (lambda): Note that under lexical binding a lambda form yields a closure object (Bug#33199).
This commit is contained in:
parent
fa605f242e
commit
39e85a0c6c
@ -1082,15 +1082,18 @@ This macro returns an anonymous function with argument list
|
||||
@var{args}, documentation string @var{doc} (if any), interactive spec
|
||||
@var{interactive} (if any), and body forms given by @var{body}.
|
||||
|
||||
In effect, this macro makes @code{lambda} forms self-quoting:
|
||||
evaluating a form whose @sc{car} is @code{lambda} yields the form
|
||||
itself:
|
||||
Under dynamic binding, this macro effectively makes @code{lambda}
|
||||
forms self-quoting: evaluating a form whose @sc{car} is @code{lambda}
|
||||
yields the form itself:
|
||||
|
||||
@example
|
||||
(lambda (x) (* x x))
|
||||
@result{} (lambda (x) (* x x))
|
||||
@end example
|
||||
|
||||
Note that when evaluting under lexical binding the result is a closure
|
||||
object (@pxref{Closures}).
|
||||
|
||||
The @code{lambda} form has one other effect: it tells the Emacs
|
||||
evaluator and byte-compiler that its argument is a function, by using
|
||||
@code{function} as a subroutine (see below).
|
||||
|
13
lisp/subr.el
13
lisp/subr.el
@ -93,12 +93,13 @@ Info node `(elisp)Specification List' for details."
|
||||
`(put (quote ,symbol) 'edebug-form-spec (quote ,spec)))
|
||||
|
||||
(defmacro lambda (&rest cdr)
|
||||
"Return a lambda expression.
|
||||
A call of the form (lambda ARGS DOCSTRING INTERACTIVE BODY) is
|
||||
self-quoting; the result of evaluating the lambda expression is the
|
||||
expression itself. The lambda expression may then be treated as a
|
||||
function, i.e., stored as the function value of a symbol, passed to
|
||||
`funcall' or `mapcar', etc.
|
||||
"Return an anonymous function.
|
||||
Under dynamic binding, a call of the form (lambda ARGS DOCSTRING
|
||||
INTERACTIVE BODY) is self-quoting; the result of evaluating the
|
||||
lambda expression is the expression itself. Under lexical
|
||||
binding, the result is a closure. Regardless, the result is a
|
||||
function, i.e., it may be stored as the function value of a
|
||||
symbol, passed to `funcall' or `mapcar', etc.
|
||||
|
||||
ARGS should take the same form as an argument list for a `defun'.
|
||||
DOCSTRING is an optional documentation string.
|
||||
|
Loading…
Reference in New Issue
Block a user