[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#49809: [PATCH] Add macro 'pcase-setq'
From: |
Lars Ingebrigtsen |
Subject: |
bug#49809: [PATCH] Add macro 'pcase-setq' |
Date: |
Wed, 11 Aug 2021 23:57:29 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) |
Michael Heerdegen <michael_heerdegen@web.de> writes:
>> +(defmacro pcase-setq (pat val &rest args)
>> + "Assign values to variables by destructuring with `pcase'.
>> +
>> +\(fn PATTERN VALUE PATTERN VALUE ...)"
It seems like there was general agreement to adding this, so I've now
applied Earl's patch, with the following addition to the doc string:
> Can we maybe enhance the docstring a bit? I think we should at least
> cover these points:
>
> - The PATTERNs are normal `pcase' patterns, the VALUES are expressions.
>
> - Evaluation happens sequentially as in `setq' (not in parallel)
>
> - When a PATTERN doesn't match it's VALUE, the pair is silently skipped
> (completely, no partial assignments are performed, AFAIU)
>
> Maybe adding a simple example would not be too bad as well?
Stefan Monnier <monnier@iro.umontreal.ca> writes:
> The result is the same whether `pcase-setq` assigns nil or doesn't touch
> the vars, so this test is not very effective. I'd rather do:
>
> (should (equal (list nil nil)
> (let ((a 'unset)
> (b 'unset))
> (pcase-setq `(,a ,b) nil)
> (list a b))))
I've also added this to the tests, but what it actually returns
instead...
> But Michael points out that it seems your code won't perform the
> assignment if the pattern doesn't match, which I find to be an
> odd behavior.
>
> I'd expect a behavior like that of `pcase-let`, instead.
... because I have no opinion here, really -- behaving like `pcase-let'
would be good, but on the other hand, the current behaviour also kinda
sorta makes sense.
So feel free to adjust the behaviour (or not).
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
- bug#49809: [PATCH] Add macro 'pcase-setq', (continued)
- bug#49809: [PATCH] Add macro 'pcase-setq', Lars Ingebrigtsen, 2021/08/04
- bug#49809: [PATCH] Add macro 'pcase-setq', Stefan Monnier, 2021/08/04
- bug#49809: [PATCH] Add macro 'pcase-setq', Michael Heerdegen, 2021/08/04
- bug#49809: [PATCH] Add macro 'pcase-setq', Stefan Monnier, 2021/08/05
- bug#49809: [PATCH] Add macro 'pcase-setq', Stefan Monnier, 2021/08/05
- bug#49809: [PATCH] Add macro 'pcase-setq', Michael Heerdegen, 2021/08/05
- bug#49809: [PATCH] Add macro 'pcase-setq', Stefan Monnier, 2021/08/06
- bug#49809: [PATCH] Add macro 'pcase-setq', Michael Heerdegen, 2021/08/06
bug#49809: [PATCH] Add macro 'pcase-setq', Okam, 2021/08/06
- bug#49809: [PATCH] Add macro 'pcase-setq', Michael Heerdegen, 2021/08/06
- bug#49809: [PATCH] Add macro 'pcase-setq',
Lars Ingebrigtsen <=
- bug#49809: [PATCH] Add macro 'pcase-setq', Michael Heerdegen, 2021/08/12
- bug#49809: [PATCH] Add macro 'pcase-setq', Okam, 2021/08/12
- bug#49809: [PATCH] Add macro 'pcase-setq', Stefan Monnier, 2021/08/12
- bug#49809: [PATCH] Add macro 'pcase-setq', Michael Heerdegen, 2021/08/12
- bug#49809: [PATCH] Add macro 'pcase-setq', Stefan Monnier, 2021/08/13
- bug#49809: [PATCH] Add macro 'pcase-setq', Michael Heerdegen, 2021/08/13
bug#49809: [PATCH] Add macro 'pcase-setq', Stefan Monnier, 2021/08/07
bug#49809: [PATCH] Add macro 'pcase-setq', Michael Heerdegen, 2021/08/08
bug#49809: [PATCH] Add macro 'pcase-setq', Stefan Monnier, 2021/08/09
bug#49809: [PATCH] Add macro 'pcase-setq', Michael Heerdegen, 2021/08/09