On 2020-11-12 19:21, Paul Sokolovsky wrote:
Hello,
[Re-routed back to python-dev.]
On Thu, 12 Nov 2020 20:04:57 +0100 Piotr Duda <duda.piotr@gmail.com> wrote:
[]
match foo: case ("foo", >val1): ... case ("bar", >val2): ...
I agree with that, though I would prefer using other symbol than > (? or $), one of reasons would by it would look better as "match all" target, other one that in future. it would allow extending syntax for simple guards like ?x < 100.
Question of "what to mark with sigils - terms-used-as-values or terms-used-for-capturing" is orthogonal to the question of "what to use as match-all symbol", though I understand the desire to repurpose the same symbol for both.
For a capturing sigil, "->", ">", ">>", "@", "?", "$" already were or can be proposed. The benefit of "->", ">", ">>" is that they're very intuitive. I'd also have preference for shorter one, because 2-chars are really verbose IMHO. OTOH, ">" has issue with parsing ambiguity unless separated by spaces ("Cls(kw1=>var)"). "$" is the worst choice IMHO, because intuitively (based on other languages - shell, etc.) it says "use the value of variable".
I'd still want to list "as" as another possibility, the advantage being that it's already used for binding elsewhere.
That said, those are 2nd-level choices. The current stage is to accept the fact that "mark capturing terms" is *very viable* alternative to "mark terms to use as values" (3rd choices - "use adhoc interpretation of non-orthogonal syntactic conventions" - being the worst). But people behind PEPs keep ignoring that choice - silently, or with minimal consideration/commentary.