[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#16567: 24.3.50; pcase should signal an error if no case matches
From: |
Stefan Monnier |
Subject: |
bug#16567: 24.3.50; pcase should signal an error if no case matches |
Date: |
Wed, 10 Sep 2014 13:26:14 -0400 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.4.50 (gnu/linux) |
>> I'm open to other suggestions, and `pcasex' is not unacceptable, so
>> I think we're closing in.
> pcase* looks less exotic that pcasex; though it's harder to type.
> BTW, I find it surprising that this doesn't signal an error:
> (pcase-let ((`(1 ,x) '("foo")))
> x)
Indeed, the semantics of pcase-let is a bit subtle: rather than use the
pattern as a filter to decide whether to match or not, it just assumes
that the match is a success and accesses the data accordingly.
So the above expands to something morally equivalent to
(let ((x (cadr '("foo")))) x)
> But I suspect that "it's not an option" to change pcase-let.
I don't think backward compatibility is as much of an issue for
pcase-let, but the motivation for this semantics was efficiency, and
this is still as valid as ever, AFAIK.
For single-branch pcase-let, the alternative
(pcase-exhaustive '("foo")
(`(1 ,x) x))
is a good replacement to get the semantics you expect. But admittedly,
for if you have several bindings in your pcase-let, the equivalent
pcase-exhaustive can become inconvenient.
Stefan
- bug#16567: 24.3.50; pcase should signal an error if no case matches, (continued)
- bug#16567: 24.3.50; pcase should signal an error if no case matches, Stefan Monnier, 2014/09/08
- bug#16567: 24.3.50; pcase should signal an error if no case matches, Helmut Eller, 2014/09/08
- bug#16567: 24.3.50; pcase should signal an error if no case matches, Stefan Monnier, 2014/09/08
- bug#16567: 24.3.50; pcase should signal an error if no case matches, Leo Liu, 2014/09/09
- bug#16567: 24.3.50; pcase should signal an error if no case matches, Stefan Monnier, 2014/09/09
- bug#16567: 24.3.50; pcase should signal an error if no case matches, Leo Liu, 2014/09/09
- bug#16567: 24.3.50; pcase should signal an error if no case matches, Josh, 2014/09/10
- bug#16567: 24.3.50; pcase should signal an error if no case matches, Helmut Eller, 2014/09/10
- bug#16567: 24.3.50; pcase should signal an error if no case matches, Stefan Monnier, 2014/09/10
- bug#16567: 24.3.50; pcase should signal an error if no case matches, Helmut Eller, 2014/09/10
- bug#16567: 24.3.50; pcase should signal an error if no case matches,
Stefan Monnier <=
- bug#16567: 24.3.50; pcase should signal an error if no case matches, Leo Liu, 2014/09/10
- bug#16567: 24.3.50; pcase should signal an error if no case matches, Glenn Morris, 2014/09/10
- bug#16567: 24.3.50; pcase should signal an error if no case matches, Stefan Monnier, 2014/09/10
- bug#16567: 24.3.50; pcase should signal an error if no case matches, Leo Liu, 2014/09/11
- bug#16567: 24.3.50; pcase should signal an error if no case matches, Stefan Monnier, 2014/09/12
- bug#16567: 24.3.50; pcase should signal an error if no case matches, Leo Liu, 2014/09/12
- bug#16567: 24.3.50; pcase should signal an error if no case matches, Stefan Monnier, 2014/09/12
- bug#16567: 24.3.50; pcase should signal an error if no case matches, Leo Liu, 2014/09/13
- bug#16567: 24.3.50; pcase should signal an error if no case matches, Stefan Monnier, 2014/09/13
- bug#16567: 24.3.50; pcase should signal an error if no case matches, Leo Liu, 2014/09/13