The most general form of let/let* Marc Nieper-Wißkirchen (15 Nov 2022 12:30 UTC)
Re: The most general form of let/let* Lassi Kortela (15 Nov 2022 20:11 UTC)
Re: The most general form of let/let* Lassi Kortela (15 Nov 2022 20:23 UTC)
Re: The most general form of let/let* Marc Nieper-Wißkirchen (15 Nov 2022 20:28 UTC)
Re: The most general form of let/let* John Cowan (15 Nov 2022 20:38 UTC)
Re: The most general form of let/let* Marc Nieper-Wißkirchen (15 Nov 2022 20:48 UTC)
Re: The most general form of let/let* Daphne Preston-Kendal (15 Nov 2022 20:35 UTC)
Re: The most general form of let/let* Marc Nieper-Wißkirchen (15 Nov 2022 20:43 UTC)
Re: The most general form of let/let* Lassi Kortela (16 Nov 2022 08:19 UTC)
Re: The most general form of let/let* Jeremy Steward (17 Nov 2022 01:53 UTC)
Re: The most general form of let/let* Marc Nieper-Wißkirchen (17 Nov 2022 07:49 UTC)
Re: The most general form of let/let* Jeremy Steward (17 Nov 2022 02:11 UTC)
Re: The most general form of let/let* Marc Nieper-Wißkirchen (17 Nov 2022 07:55 UTC)
Re: The most general form of let/let* Lassi Kortela (17 Nov 2022 08:01 UTC)

Re: The most general form of let/let* Marc Nieper-Wißkirchen 17 Nov 2022 07:55 UTC

Am Do., 17. Nov. 2022 um 03:12 Uhr schrieb Jeremy Steward
<xxxxxx@thatgeoguy.ca>:
>
> > (let-values (((d) (using c
> >                              (k c)))
> >                     ((a) (f))
> >                     ((c) (using b
> >                              (h b)))
> >                     ((b) (g)))
> >    <expr>)
>
> The example here - from an ergonomics perspective the extra parens
> around (d) / (a) / (c) / (b) seem unwarranted.

This is just because I used the let-values and not the let variant.
The former is more general.  The let variant would be

(let ((d (using c
             (k c)))
        (a (f))
        (c (using b
              (h b)))
        (b (g)))
  <expr>)

> Likewise, I'm recalling that a lot of the binding here is really a
> matter of matching the ordering based on dependencies. Another thread
> commented on how this is similar to Makefile syntax and I'd agree that
> there's some pattern matching going on here.

The relationship to Makefile syntax is that a topological sort is
happening in the background.

> Which makes me think there's a match-let in here somewhere that's
> itching to come out. Thinking similar to
> <https://api.call-cc.org/5/doc/matchable/match-let>, although not quite
> how it is exposed there since the Wright-Cartwright-Shinn matcher seems
> to propagate some of the unfortunate baggage of |let|.
>
> I understand that SRFI 241 doesn't contain this, but when binding
> multiple arguments at once I always feel like the matching syntax seems
> to better express the idea.
>
> Thoughts? Is |let| a distraction from a more ergonomic form?

match-let does not bind multiple values but matches against, say, a
list.  This is different from the above.