mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-27 07:37:33 +00:00
Clarify lexical binding with symbol args behavior
* doc/lispref/variables.texi (Lexical Binding): Clarify that symbol
arguments always refer to dynamic values (Bug #23781). Remove mention
of obsolete restriction regarding lexical binding for defun and
defmacro, this no longer applies since 61b108cc
2012-05-29 "*
lisp/emacs-lisp/byte-run.el (defmacro, defun): Move from C...".
This commit is contained in:
parent
f981b31367
commit
850ba444a7
@ -974,7 +974,7 @@ itself.
|
||||
|
||||
@cindex lexical environment
|
||||
Here is how lexical binding works. Each binding construct defines a
|
||||
@dfn{lexical environment}, specifying the symbols that are bound
|
||||
@dfn{lexical environment}, specifying the variables that are bound
|
||||
within the construct and their local values. When the Lisp evaluator
|
||||
wants the current value of a variable, it looks first in the lexical
|
||||
environment; if the variable is not specified in there, it looks in
|
||||
@ -1032,11 +1032,13 @@ lives on even after the @code{let} binding construct has exited. Each
|
||||
time we evaluate the closure, it increments @code{x}, using the
|
||||
binding of @code{x} in that lexical environment.
|
||||
|
||||
Note that functions like @code{symbol-value}, @code{boundp}, and
|
||||
@code{set} only retrieve or modify a variable's dynamic binding
|
||||
(i.e., the contents of its symbol's value cell). Also, the code in
|
||||
the body of a @code{defun} or @code{defmacro} cannot refer to
|
||||
surrounding lexical variables.
|
||||
Note that unlike dynamic variables which are tied to the symbol
|
||||
object itself, the relationship between lexical variables and symbols
|
||||
is only present in the interpreter (or compiler). Therefore,
|
||||
functions which take a symbol argument (like @code{symbol-value},
|
||||
@code{boundp}, and @code{set}) can only retrieve or modify a
|
||||
variable's dynamic binding (i.e., the contents of its symbol's value
|
||||
cell).
|
||||
|
||||
@node Using Lexical Binding
|
||||
@subsection Using Lexical Binding
|
||||
|
Loading…
Reference in New Issue
Block a user