GNU bug report logs - #52063
28.0.60; Confusing presentation of lambda

Previous Next

Package: emacs;

Reported by: Eli Zaretskii <eliz <at> gnu.org>

Date: Tue, 23 Nov 2021 18:57:02 UTC

Severity: normal

Found in version 28.0.60

Full log


View this message in rfc822 format

From: Lars Ingebrigtsen <larsi <at> gnus.org>
To: Stefan Monnier <monnier <at> iro.umontreal.ca>
Cc: Philipp Stephani <p.stephani2 <at> gmail.com>, Filipp Gunbin <fgunbin <at> fastmail.fm>, Eli Zaretskii <eliz <at> gnu.org>, 52063 <at> debbugs.gnu.org
Subject: bug#52063: 28.0.60; Confusing presentation of lambda
Date: Fri, 26 Nov 2021 13:26:34 +0100
Stefan Monnier <monnier <at> iro.umontreal.ca> writes:

> We could have something like:
>
>     (let ((foo 1)
>           (bar 2)
>           (baz 5))
>       (lambda (x) (+ x bar)))
>
> return an object like
>
>     (closure (x) ((bar . 2))
>       (+ x bar))
>
> instead of the current
>
>     (closure ((baz . 5) (bar . 2) (foo . 1) t) (x)
>       (+ x bar))

That does seem a lot more readable (and makes the similarities to
`lambda' more obvious.  Could we go one further and do

     (closure (x)
       (environment ((bar . 2)))
       (+ x bar))

or something like that?  And in that case, we could just say even say that

     (lambda (x)
       (declare (environment ((bar . 2))))
       (+ x bar))

is how to represent this.  😀  (I.e., a `lambda' with a `declare
environment' is a closure.)

(Which would also mean that we'd have to allow `declare' in lambdas,
which I think we should anyway.)

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




This bug report was last modified 3 years and 255 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.