Pattern matching: Callback For Matching Type

monkyyy crazymonkyyy at gmail.com
Wed May 29 18:48:20 UTC 2024


On Wednesday, 29 May 2024 at 18:24:19 UTC, Richard (Rikki) Andrew 
Cattermole wrote:
> Today I woke up and found I wanted to write up a proposal for 
> pattern matching for D.

hmmm strange

>
> I had been putting this one off as it wasn't really of interest 
> to me and wanted to see what Walter had come up with for last 
> DConf Online (it was changed at last minute).
>
> As a feature it seems fairly straightforward; we as a community 
> want a context-aware keyword called ``match`` that operates on 
> a type or a tuple and performs matching with support for 
> multiple dispatch and inference of pattern types. Without full 
> pattern matching of literals or nested types.
>
> This will work for sum types without the need to add them to 
> the language beforehand.
>
> Permanent: 
> https://gist.github.com/rikkimax/79cbe199618b3f99104f7df2fc2a9681/e0e6dd44f7477be962e6c71312ba08a1fe1ee8d6
> Latest: 
> https://gist.github.com/rikkimax/79cbe199618b3f99104f7df2fc2a9681
>
> ```d
> alias MTU = MyTaggedUnion!(int, float, string);
>
> MTU mtu = MTU(1.5);
>
> mtu.match {
> 	(float v) => writeln("a float! ", v),
> 	v => writeln("catch all! ", v)
> };
> ```

I see no obvious way "value specialization" would work here


More information about the dip.ideas mailing list