mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-24 07:20:37 +00:00
Document that variable binding order is unspecified
* doc/lispref/variables.texi (Local Variables): * cl.texi (Modify Macros): Document that binding order in 'let' and 'cl-letf' is unspecified.
This commit is contained in:
parent
272554a666
commit
c04ac8a319
@ -221,6 +221,18 @@ Here is an example of this: @code{z} is bound to the old value of
|
||||
@result{} (1 2)
|
||||
@end group
|
||||
@end example
|
||||
|
||||
On the other hand, the order of @emph{bindings} is unspecified: in the
|
||||
following example, either 1 or 2 might be printed.
|
||||
|
||||
@example
|
||||
(let ((x 1)
|
||||
(x 2))
|
||||
(print x))
|
||||
@end example
|
||||
|
||||
Therefore, avoid binding a variable more than once in a single
|
||||
@code{let} form.
|
||||
@end defspec
|
||||
|
||||
@defspec let* (bindings@dots{}) forms@dots{}
|
||||
|
@ -1179,6 +1179,11 @@ behavior. (@code{point} and @code{point-marker} are equivalent
|
||||
as @code{setf} places; each will accept either an integer or a
|
||||
marker as the stored value.)
|
||||
|
||||
Like in the case of @code{let}, the @var{value} forms are evaluated in
|
||||
the order they appear, but the order of bindings is unspecified.
|
||||
Therefore, avoid binding the same @var{place} more than once in a
|
||||
single @code{cl-letf} form.
|
||||
|
||||
Since generalized variables look like lists, @code{let}'s shorthand
|
||||
of using @samp{foo} for @samp{(foo nil)} as a @var{binding} would
|
||||
be ambiguous in @code{cl-letf} and is not allowed.
|
||||
|
Loading…
Reference in New Issue
Block a user