Subject: bug#21048: 24.4; Letrec docs

From: Lars Ingebrigtsen <[email-masked]>
Date: Wed, 09 Oct 2019 19:33:20 +0200

Eli Zaretskii <[email-masked]> writes:

> Thanks, but I have trouble understanding what the text you wrote
> says.  I think it needs clarifying, or maybe a descriptive enough
> example.

Yeah, it's pretty subtle what the difference is -- feel free to rewrite
to make it clearer.

I went through the tree looking for a real-life example of when this
macro is useful, and the first half-dozen examples I looked at could
have been written with let* instead and worked just as well, as far as I
can tell.

But I found one in elisp-mode.el and I adapted it slightly and added
this to the manual:

----

For instance, here's a closure that removes itself from a hook after
being run once:

@lisp
(letrec ((hookfun (lambda ()
                    (message "Run once")
                    (remove-hook 'post-command-hook hookfun))))
  (add-hook 'post-command-hook hookfun))
@end lisp

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no