On 18/07/2020 02:10, Guido van Rossum wrote:
[...] it was quickly pointed out by my co-authors that this doesn't
fly, because when the parser sees `case other_3d_point:` it doesn't
know whether you meant this as a capture pattern (binding the variable
`other_3d_point`) or as a pattern object.
This could be solved. One option would be to make pattern objects
callable, such that when you write:
my_pattern = MatchCase("something")
match stuff:
case my_pattern():
...
my_pattern() is used as a pattern object, and a single identifier like
my_pattern is interpreted, as expected by the current version of the
PEP, as a capture. I believe this is not subtle enough to be confusing
to anyone who learns the feature as a whole. We don't, after all,
confuse function calls for references to a function, or vice-versa.
Also with your proposal the compiler would not be able to tell that x,
y and z are local variables, because they are only mentioned inside
string literals.
I was hoping the implementation of MatchCase could take care of this. I
suppose it would require MatchCase to have access to locals() everywhere
it's called; would this be a problem?
_______________________________________________
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/4WURK7EVXC5SPZKIRACEAM32RRK2HTY5/
Code of Conduct: http://python.org/psf/codeofconduct/