On 7/31/20 12:36 AM, Tobias Kohn wrote:
And since pattern matching is really
a new feature to be introduced to Python, a feature that can
be seen in different lights, there is no 'Python-Programmer
intuition' that would apply in this case.
It's not fair to say "intuition doesn't apply because it's new syntax".
There are plenty of examples of intuition serving a Python programmer
well when encountering new syntax. A Python programmer's intuition is
informed by existing syntax and conventions in the language. When they
see a new construct, its similarity to existing constructs can make
understanding the new syntax quite intuitive indeed.
Take for example list comprehensions. Python 1 programmers hadn't seen
a = [x for x in y]
But they knew what square brackets meant in that context, it meant
"creates a new list". And they knew what "for x in y" meant, that meant
iteration. Understanding those separate two concepts, a Python 1
programmer would be well on their way to guessing what the new syntax
meant--and they'd likely be right. And once they understood list
comprehensions, the first time they saw generator expressions and set
and dict comprehensions they'd surely intuit what those did immediately.
The non-intuitiveness of PEP 622, as I see it, is that it repurposes
what looks like existing Python syntax but frequently has wholly
different semantics. For example, a "class pattern" looks like it's
calling a function--perhaps instantiating an object?--but the actual
semantics and behavior is very different. Similarly, a "mapping pattern"
looks like it's instantiating a dict, but it does something very
different, and has unfamiliar and seemingly arbitrary rules about what
is permitted, e.g. you can't use full expressions or
undotted-identifiers when defining a key. Add the "capture pattern" to
both of these, and a Python programmer's intuition about what this
syntax traditionally does will be of little help when encountering a PEP
622 match statement for the first time.
Cheers,
//arry/
_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-le...@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at
https://mail.python.org/archives/list/python-dev@python.org/message/Q5KULD7E3TZSSQ5CFUOQSJTGS5JQS4WM/
Code of Conduct: http://python.org/psf/codeofconduct/