On Thu, Jun 25, 2020 at 9:21 AM Rhodri James <rhodri@kynesim.co.uk> wrote:
Well, now is the time for expressing surprise :-p

As I've said before, one of my main problems with the PEP is as you go
through it, more and more special cases and surprises appear, and the
consequences of earlier surprises generate more special cases and
surprises.  You claim not unreasonably that it's easy to remember that
"_" is special in matches.  Maybe you're right, but that decision has
consequences spelled out later in the PEP that are less easy to
remember.  Another example: I had not previously thought the definition
of name patterns to be surprising, but apparently they are (it just
surprised me, at any rate).  That consequently makes the definition of
constant value patterns, which I was already iffy about, really quite

Each individual learning curve might be small, but cumulative total by
the time you reach the end of the PEP is large.  Simple match statements
will, with adequate squinting, look recognisably like other areas of
Python.  Complex match statements won't.  And that's a problem for
anyone who wants to be able to read someone else's code.

Bear in mind I am predominantly a C programmer who uses Python from time
to time for tools and glue.  If I have to put in effort to learn new
special-case rules in Python, that's an active discouragement; I'm
frankly unlikely to bother, and more likely to write those tools and
glue in C instead.  I'm certainly much less likely to use someone else's
tools and glue if I have to re-read the spec to remind myself what all
the gotchas are.

On my personal "potentially inscrutable uses of a tool" this still rates well below list comprehensions, so there's that; the biggest pet peeve I have anymore is understanding at a glance what is and isn't an assignment. This is a draft PEP and a lot of discussion around making assignment vs matched classes more explicit, so it's not like this is going to be set in stone, and I doubt that most will ever use the more esoteric parts of the syntax. One way or another, this is going to be a far more capable, and thus complex, tool than a switch statement, so there's only so much obviousness you can ask for coming in blind.