[Python-ideas] Match statement brainstorm

Koos Zevenhoven k7hoven at gmail.com
Tue May 24 11:42:06 EDT 2016


On Tue, May 24, 2016 at 5:59 PM, Michel Desmoulin
<desmoulinmichel at gmail.com> wrote:
> What about making it a function ?
>
> Pattern matching is complex, it can be like a mini language inside the
> language, just like regex.
>
> To match text we do:
>
> import re
> re.match('pattern', 'string')
>
> We could do the same for matching structures:
>
> from inspect import match
>
> def do(stuff):
>     m = match(stuff): # m implements __call__
>     if m('whatever mini language you like'):
>         return foo
>     if m('again'):
>         return m.thing_your_extracted
>

Or with methods:

m = match(stuff)
if m.by_type(SomeType):
    # handle SomeType
elif m.by_attrs('x', 'y'):
    # do things with stuff.x and stuff.y
elif m.by_len(3):
    x,y,z = stuff
    # do things with x, y, z

> Pros:
>
> - no need for a new syntax
> - very explicit
> - use well know constructs
> - we can easily start experimenting with the matching language in a lib
> in Pypy
+ can be extended easily

>
> Cons:
>
> - much more verbose;
> - debugging your mini language and handling error is not as good;
+ probably slower
+ need to separately get the desired attributes/elements after matching.

-- Koos


More information about the Python-ideas mailing list