This is tricky for me. While I am sympathetic to the feature, I think this
would be the first time abstraction was added to pattern matching so we'd need
to be careful.
Up to now the pattern matching syntax uses the same syntax that you use to
create the literal data that is being matched. Eg for a map pattern we write a
map
%{a: variable} = %{a: 1}
This brings clarity because the pattern describes the data you are matching on
- when you read the pattern you can see right away what the expected data is (a
map).
The proposal sketched in the Gist would add indirection to pattern matching by
introducing a new syntax - syntax that is specific to one abstract data
structure (the map set).
By abstracting away the details of the data structure being matched on we
reduce the clarity we usually get, we introduce more syntax into the language,
and we open the floodgates
to whether we should have pattern matching on more abstract data types -
Ranges, URIs... DateTimes etc. At which point the question really becomes
"should we have abstract patterns
in Elixir" which I think is harder to answer.
In the meantime looking at ex_pat might be valuable to you because it would
allow you to reach into the details of a MapSet with pattern matching in a
controlled way that meant if the implementation
details of a MapSet changes it wouldn't break you program too much.
https://github.com/vic/expat <https://github.com/vic/expat>
Just my two cents though!
Best
Adam
> On 7 Feb 2022, at 10:33, SJ <[email protected]> wrote:
>
> Hi all.
>
> I have set out a proposal of what these things could potentially look like.
>
> https://gist.github.com/bdanklin/f4fc015fa90e9b33bb8cb580344e1258
> <https://gist.github.com/bdanklin/f4fc015fa90e9b33bb8cb580344e1258>
>
> I searched for prior work in this area and couldn't find any.
>
> If it's a welcome feature I'd be happy to work on it given some direction of
> where to start.
>
> Thanks for any feedback.
>
> Best
>
> --
> You received this message because you are subscribed to the Google Groups
> "elixir-lang-core" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected]
> <mailto:[email protected]>.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/elixir-lang-core/a73ced4a-5f61-4f40-bbba-8ed2749a3e62n%40googlegroups.com
>
> <https://groups.google.com/d/msgid/elixir-lang-core/a73ced4a-5f61-4f40-bbba-8ed2749a3e62n%40googlegroups.com?utm_medium=email&utm_source=footer>.
--
You received this message because you are subscribed to the Google Groups
"elixir-lang-core" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/elixir-lang-core/8A766BAC-F075-4B54-9C6D-AC53A46FAAEF%40a-corp.co.uk.