[Python-ideas] pattern matching proof-of-concept
Sven R. Kunze
srkunze at mail.de
Wed Jun 1 09:37:10 EDT 2016
On 28.05.2016 12:26, Paul Moore wrote:
> 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).
That's exactly what I had in mind. :) Far more flexible than a
monolithic switch-case and looks quite Pythonic (= to me: minimum amount
of special characters ;-) ).
Thanks a lot, Michael.
Best,
Sven
More information about the Python-ideas
mailing list