GNU bug report logs -
#52063
28.0.60; Confusing presentation of lambda
Previous Next
Full log
View this message in rfc822 format
>> >> > But perhaps others have other opinions here?
>> >> Compile your code and the problem goes away (because you'll never see
>> >> (lambda ...) or (closure ...) values, they'll all be
>> >> byte-code-functions instead ;-)
>> > I don't want to compile my .emacs.
>> > Any other words of wisdom before I write this off as another annoyance
>> > of lexical-binding, and take care to disable that wherever I can?
>> The other word of wisdom is:
>> Don't add lambdas to hook. Always name those functions.
> So this issue is specific to hooks?
No, but in 99% of the cases you won't actually *see* a function value
(unless you specifically go looking for it, e.g. with `symbol-function`).
One of the cases where you are more likely to see one is if you look at
the value of a hook.
> I thought add-hook is just a fancy way of consing a list,
It is.
> but you seem to say that it has some side effects that other
> constructs don't?
Not really, no.
> IOW, would manually consing a list with a lambda-function produce the
> same results,
Yes.
> or would it leave the lambda-function intact?
No. A *value* of the form (lambda ARGS . BODY) is a (non-compiled)
dynamically-scoped function. Non-compiled statically-scoped function
values use the form (closure ENV ARGS . BODY...).
So you'll only get a value of the form (lambda ARGS . BODY) if you use
the dynamically scoped dialect of ELisp (or if you manually create such
a list, e.g. with '(lambda ...) or `(lambda ...) or (list 'lambda ...),
etc...).
Stefan
This bug report was last modified 3 years and 254 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.