* Re: [Emacs-diffs] master 4612b2a 1/2: Implement and-let*
[not found] ` <20170912171815.13B9520DE6@vcs0.savannah.gnu.org>
@ 2017-09-12 17:21 ` Stefan Monnier
2017-09-12 17:29 ` Mark Oteiza
2017-09-13 16:39 ` Richard Stallman
0 siblings, 2 replies; 4+ messages in thread
From: Stefan Monnier @ 2017-09-12 17:21 UTC (permalink / raw)
To: emacs-devel; +Cc: Mark Oteiza
> (internal--build-binding-value-form): Extend to account for
> solitary symbols and (EXPR) items in binding varlist.
We're forced to accept those forms in `let` and `let*` for historical
reasons, but why do we want to also accept them in newer constructs?
Stefan
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [Emacs-diffs] master 4612b2a 1/2: Implement and-let*
2017-09-12 17:21 ` [Emacs-diffs] master 4612b2a 1/2: Implement and-let* Stefan Monnier
@ 2017-09-12 17:29 ` Mark Oteiza
2017-09-13 16:39 ` Richard Stallman
1 sibling, 0 replies; 4+ messages in thread
From: Mark Oteiza @ 2017-09-12 17:29 UTC (permalink / raw)
To: Stefan Monnier; +Cc: emacs-devel
On 12/09/17 at 01:21pm, Stefan Monnier wrote:
> > (internal--build-binding-value-form): Extend to account for
> > solitary symbols and (EXPR) items in binding varlist.
>
> We're forced to accept those forms in `let` and `let*` for historical
> reasons, but why do we want to also accept them in newer constructs?
Solitary symbols are expanded as x -> (x (and PREV x)), so it's not the
historical behavior. (EXPR) means EXPR is an s-expression, which
doesn't make sense in let or let*, e.g.:
(let (x)
(and-let* (((null x))) "it's null"))
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [Emacs-diffs] master 4612b2a 1/2: Implement and-let*
2017-09-12 17:21 ` [Emacs-diffs] master 4612b2a 1/2: Implement and-let* Stefan Monnier
2017-09-12 17:29 ` Mark Oteiza
@ 2017-09-13 16:39 ` Richard Stallman
2017-09-14 15:46 ` Michael Heerdegen
1 sibling, 1 reply; 4+ messages in thread
From: Richard Stallman @ 2017-09-13 16:39 UTC (permalink / raw)
To: Stefan Monnier; +Cc: mvoteiza, emacs-devel
[[[ To any NSA and FBI agents reading my email: please consider ]]]
[[[ whether defending the US Constitution against all enemies, ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]
> > (internal--build-binding-value-form): Extend to account for
> > solitary symbols and (EXPR) items in binding varlist.
> We're forced to accept those forms in `let` and `let*` for historical
> reasons,
It is not just a matter of history.
Those are very convenient in 'let'.
It would be a bad idea not to have them.
Whether they are useful in other new constructs, I don't know.
What do these new constructs look like?
--
Dr Richard Stallman
President, Free Software Foundation (gnu.org, fsf.org)
Internet Hall-of-Famer (internethalloffame.org)
Skype: No way! See stallman.org/skype.html.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [Emacs-diffs] master 4612b2a 1/2: Implement and-let*
2017-09-13 16:39 ` Richard Stallman
@ 2017-09-14 15:46 ` Michael Heerdegen
0 siblings, 0 replies; 4+ messages in thread
From: Michael Heerdegen @ 2017-09-14 15:46 UTC (permalink / raw)
To: Richard Stallman; +Cc: mvoteiza, Stefan Monnier, emacs-devel
Richard Stallman <rms@gnu.org> writes:
> > > (internal--build-binding-value-form): Extend to account for
> > > solitary symbols and (EXPR) items in binding varlist.
>
> > We're forced to accept those forms in `let` and `let*` for historical
> > reasons,
>
> It is not just a matter of history.
> Those are very convenient in 'let'.
> It would be a bad idea not to have them.
> Whether they are useful in other new constructs, I don't know.
> What do these new constructs look like?
Just search for SRFI 2, e.g.
https://www.gnu.org/software/guile/manual/html_node/SRFI_002d2.html
`if-let*' and `when-let*' in Emacs are analogue.
I don't know much about Lisp's history, but I think there was a
misunderstanding about what these special binding forms mean. For
example, making a binding form consisting of a single symbol mean "bind
the symbol to nil" would not make sense in these new constructs -
instead, we test the symbol's value for nilness.
Michael.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2017-09-14 15:46 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20170912171813.26498.77867@vcs0.savannah.gnu.org>
[not found] ` <20170912171815.13B9520DE6@vcs0.savannah.gnu.org>
2017-09-12 17:21 ` [Emacs-diffs] master 4612b2a 1/2: Implement and-let* Stefan Monnier
2017-09-12 17:29 ` Mark Oteiza
2017-09-13 16:39 ` Richard Stallman
2017-09-14 15:46 ` Michael Heerdegen
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).