]> git.eshelyaron.com Git - emacs.git/commitdiff
Document that variable binding order is unspecified
authorPhilipp Stephani <phst@google.com>
Fri, 23 Dec 2016 12:14:55 +0000 (13:14 +0100)
committerPhilipp Stephani <phst@google.com>
Fri, 23 Dec 2016 16:28:37 +0000 (17:28 +0100)
* doc/lispref/variables.texi (Local Variables):
* cl.texi (Modify Macros): Document that binding order in 'let' and
'cl-letf' is unspecified.

doc/lispref/variables.texi
doc/misc/cl.texi

index a2d64815d94471bc9bd2b47f1cf61935312dd6fd..ba31f8563692efe0b0768eec913aa17d1f4a3ef9 100644 (file)
@@ -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{}
index c62fa727c1059f44401a86ed182f6ec48b615226..75a83602fa328d7ce852a36aa80d8ca1e2ea32ca 100644 (file)
@@ -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.