Fwd: Merging with let*-values?
Marc Nieper-WiÃkirchen 31 Aug 2020 17:28 UTC
---------- Forwarded message ---------
Von: Marc Nieper-Wißkirchen <xxxxxx@gmail.com>
Date: Mo., 31. Aug. 2020 um 19:22 Uhr
Subject: Re: Merging with let*-values?
To: Adam Nelson <xxxxxx@nels.onl>
Cc: <xxxxxx@srfi.schemers.org>
Am Mo., 31. Aug. 2020 um 19:12 Uhr schrieb Adam Nelson <xxxxxx@nels.onl>:
> This is sufficiently different that it should be its own SRFI; feel free
> to write that SRFI if you want to. My opinion is that merging `chain`
> and any form of `let*` is unclear. It's somewhat obvious what a macro
> called `chain` does. But it's completely non-obvious that Scheme's
> `let*` assigns special meaning to _ when no other Lisp's `let*` does
> that, and even less obvious that this is a feature that only certain
> Schemes support (it can't be added without language-level support, since
> some Schemes don't allow shadowing of core special forms). Core special
> forms shared with other Lisps shouldn't do unpredictable magic things.
I agree with you that it is an idea for the future, and so it was meant.
I disagree though with what you call obvious. The semantics of chain
are exactly the let*-values semantics (apart from implicit vs explicit
binding), so "let*-values" is more obvious than "chain" (unless you
already know SRFI 197).
That said, extending a core fore is usually not a good idea unless the
extension is really well thought of and equally important, so there
are good reasons to call my extended let*-values proposal slightly
different. (It will have to be an unhygienic macro because "_" has to
be bound implicitly in the init expressions.)
Marc