Today I woke up and found I wanted to write up a proposal for pattern matching for D.
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
alias MTU = MyTaggedUnion!(int, float, string);
MTU mtu = MTU(1.5);
mtu.match {
(float v) => writeln("a float! ", v),
v => writeln("catch all! ", v)
};