Document `letrec'

* doc/lispref/variables.texi (Local Variables): Document letrec
(bug#21048).

* lisp/subr.el (letrec): Expand the doc string slightly.
This commit is contained in:
Lars Ingebrigtsen 2019-10-09 06:06:24 +02:00
parent 43310f4387
commit 489a106b1c
2 changed files with 12 additions and 1 deletions

View file

@ -265,6 +265,15 @@ Compare the following example with the example above for @code{let}.
@result{} (1 1)
@end group
@end example
@end defspec
@defspec letrec (bindings@dots{}) forms@dots{}
This special form is like @code{let}, but all the variables are bound
before any of the local values are computed. The values are then
assigned to the locally bound variables. This is only useful when
lexical binding is in effect, and you want to create closures that
refer to bindings that would otherwise not yet be in effect when using
@code{let}.
@end defspec
Here is a complete list of the other facilities that create local

View file

@ -1739,7 +1739,9 @@ the hook's buffer-local value rather than its default value."
The value of the last form in BODY is returned.
Each element of BINDERS is a list (SYMBOL VALUEFORM) which binds
SYMBOL to the value of VALUEFORM.
All symbols are bound before the VALUEFORMs are evalled."
The main difference between this macro and `let'/`let*' is that
all symbols are bound before any of the VALUEFORMs are evalled."
;; Only useful in lexical-binding mode.
;; As a special-form, we could implement it more efficiently (and cleanly,
;; making the vars actually unbound during evaluation of the binders).