For me, this prompts the question (which I appreciate is more about
implementation than design) - would there be any (significant)
performance difference between [...]
In C, the switch statement was explicitly intended to be faster by
means of doing a computed branch. In a higher level language, I can
see the added features of match meaning that it's *slower* than a
series of if tests for simple cases. But I have no intuition about the
performance of this proposal. I'd like to believe that the choice
between the 2 alternatives above is purely a matter of preferred
style, but I don't know. If match is significantly slower, that could
make it a bit of an attractive nuisance.
Each case essentially compiles down to an equivalent if structure, already. There's no penalty that I'm seeing. There's actually much more room for optimizing eventually, since the test is bound to a single element instead of any arbitrary if expression, and a Cython or PyPy could work some magic to detect a small set of primitive types and optimize for that.