Subject: Re: bug#75594: 31.0.50; [FR]: Change equality test for Pcase non-linear patterns

From: Eshel Yaron <[email-masked]>
Date: Sun, 19 Jan 2025 08:32:09 +0100

Hi,

Michael Heerdegen <[email-masked]> writes:

> Hello again,
>
>> > > 1- some kind of "contextual" pcase macro like
>> > >
>> > >     (with-equality-predicate #'equal
>> > >       `(,foo ,foo ,foo))
>> > >
>> > > 2- some kind of VAR pattern but annotated with an equality predicate in
>> > >    case this is not the first use of this identifier, so you'd write
>> > >
>> > >     `(,(var foo #'equal) ,(var foo #'equal) ,(var foo #'equal))
>
> Maybe something like
>
> (with-equality-predicate ((foo . #'equal))
>   `(,foo ,foo ,foo))
>
> ?

I'd rather not specify all affected variables explicitly, if that's what
this syntax implies.  The most important use case is to convert entire
pcase patterns to use equal semantics.  So transforming an arbitrary
pcase pattern to one where all non-linear patterns use equal should be
as simple as possible.  (Accordingly, I tend to "vote" for simply
changing the semantics to use equal, so no transformation is needed.)

Regards,

Eshel