> # Pattern matching with guards > x = 'three' > > number = match x: > 1 => "one" > y if y is str => f'The string is {y}' > _ => "anything" > > print(number) # The string is three
I think you meant to use isinstance(y, str) ? This looks like an incomplete ternary as well, missing the else clause, so it wouldn't be a valid expression either way. And a NameError. y is never defined anywhere. Since there's no name bound to the variable being matched, would that mean a new keyword ? Also, in the rest you seem to be testing "x == {matchidentifier}", but here it suddenly looks like a boolean True would trigger a match ? And if so, would other boolean truthy values also trigger one, making the entire construct rather....limited ? It looks like you're attempting to suggest at least 3 new language syntax elements here. 4 if I count the type matching of "x:int", which you could sell as type annotation, if those hadn't been explicitly optional and ignored when actually binding the names. And almost every other example can be solved with a dict and .get(). The remainder uses a dict as match, and still work on if/elif perfectly fine. Also, I'd say "but other people do it" isn't a valid reason for implementation. There's plenty people doing stupid things, that doesn't mean it's a good idea to do it to. If they idea can't stand on it's own, it's not worth it. From the syntax corner, it also doesn't really look like Python to me. (my apologies if I sound a bit hostile. I've attempted 3 rewrites to get that out. I only really tried to look at the syntax with what I suppose is it's intended meaning here.) 2018-05-03 15:36 GMT+02:00 Alberto Berti <albe...@metapensiero.it>: >>>>>> "Stéfane" == Stéfane Fermigier <s...@fermigier.com> writes: > > Stéfane> On Thu, May 3, 2018 at 2:41 PM, Robert Roskam > <raiderrob...@gmail.com> > Stéfane> wrote: > >> > >> And for the sake of completeness, here are other languages with similar > >> syntax features and their associated documentation [...] > >> > Stéfane> Still for the sake of completeness, and without any judgement > from me at > Stéfane> this point, a couple more, which are more related to Python: > > Stéfane> Coconut: http://coconut.readthedocs.io/en/master/DOCS.html#match > > Stéfane> Mochi: https://github.com/i2y/mochi#pattern-matching > > There's also macropy http://macropy3.readthedocs.io/en/latest/pattern.html > -- > Alberto Berti - Information Technology Consultant > > "gutta cavat lapidem" > > _______________________________________________ > Python-ideas mailing list > Python-ideas@python.org > https://mail.python.org/mailman/listinfo/python-ideas > Code of Conduct: http://python.org/psf/codeofconduct/ _______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/