Subject: Re: bug#70597: Problem in pcase-let?

From: Marco Antoniotti <[email-masked]>
Date: Sun, 28 Apr 2024 20:22:27 +0200

Hi

oooops sorry.  Somehow I was missing cl-destructuring-bind; my bad.

In any case, at a minimum the warning should be issued.  I did refrain from
using pcase-let after all, although it "seemed right" for my use case.
Having said that, I would advocate changing the semantics.

Your call anyway.

All the best

On Sun, Apr 28, 2024 at 7:05 PM Stefan Monnier <[email-masked]>
wrote:

> > Let me just answer the destructuring-bind comment by Stefan (I am
> answering
> > to his last email).  The previous ones are somewhat answered here as
> well.
> >
> > In some sense, yes.  I kind of want destructuring-bind.  It is, IMHO,
> > unfortunate that ELisp does not have it and that we don't have
> > cl-destructuring-bind either; lower level beast than matching, but
> useful.
>
> I don't understand what you mean: `pcase-let` *is* a destructring bind,
> and we also do have `cl-destructuring-bind`.
>
> > As per the pcase-let, I still think that the name and/or its behavior
> > are confusing because of expectations about how a pattern matcher
> > usually works.
>
> Yes, clearly there is a problem of users being surprised.
>
> But AFAICT, changing the semantics is not the right answer, because the
> current behavior matches(!) what is usually needed and because the other
> behaviors are already well-served by `pcase` and `pcase-exhaustive`.
>
> Maybe a better answer is to try and detect ill-conceived patterns like in:
>
>     (pcase-let (`(foo bar ,x) (SOMETHING)) (ANYTHING))
>
> and emit a warning suggesting to rewrite it to
>
>     (pcase-let (`(,_ ,_ ,x) (SOMETHING)) (ANYTHING))
>
>
> - Stefan
>
>

-- 
Marco Antoniotti
Somewhere over the Rainbow