diff options
author | Noam Postavsky <npostavs@gmail.com> | 2016-06-24 20:39:24 -0400 |
---|---|---|
committer | Noam Postavsky <npostavs@gmail.com> | 2016-07-01 00:02:48 -0400 |
commit | 850ba444a7be542c8dc92efbeb4031868f3f779d (patch) | |
tree | aee964c7047f4fdcf0557a61548988d72bcadd1a /doc | |
parent | f981b3136742a8597674dd4915afeb1b220a0464 (diff) |
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...".
Diffstat (limited to 'doc')
-rw-r--r-- | doc/lispref/variables.texi | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/doc/lispref/variables.texi b/doc/lispref/variables.texi index 6c53e9b6cc..a2d64815d9 100644 --- a/doc/lispref/variables.texi +++ b/doc/lispref/variables.texi @@ -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 |