[Python-ideas] pattern matching proof-of-concept

Paul Moore p.f.moore at gmail.com
Sat May 28 06:26:09 EDT 2016


On 28 May 2016 at 08:22, Michael Selik <michael.selik at gmail.com> wrote:
> My original dict unpacking proposal was very short and lacked a motivating
> usage. Toy examples made my proposal look unnecessarily verbose and
> suggested obvious alternatives with easy current syntax.
>
> Nested/recursive unpacking is much more troublesome, especially when
> combined with name-binding. I wrote an example to compare my proposal with
> current syntax.
>
> Example usage.
> https://github.com/selik/destructure/blob/master/examples/fips.py
>
> Implementation.
> https://github.com/selik/destructure/blob/master/destructure.py
>
> The design of my module I'm least happy with is the name-binding. I extended
> a SimpleNamespace to create an Erlang-style distinction between bound and
> unbound names. Though the API is a bit awkward, now that the module is
> built, I'm less enthusiastic about introducing new syntax. Funny how that
> works.
>
> I haven't yet decided how to add post-binding guards to the cases.

Interesting! Thanks for taking the time to make a real-world use case.
I haven't looked at the module yet, just the example, but the code
does look pretty clean and readable. The example is certainly complex
enough that I'd probably end up with pretty messy and fragile code if
I just tried to put something together with pure Python code.

And yes, it's interesting how finding a good API for a module can make
the need for a dedicated syntax less pressing. But working out that
good API can be really hard (I don't think I'd ever have thought of
doing it the way you did).

Paul


More information about the Python-ideas mailing list