sumtype 0.3.0

Nick Sabalausky (Abscissa) SeeWebsiteToContactMe at semitwist.com
Tue May 8 07:25:53 UTC 2018


On 05/07/2018 05:35 PM, Paul Backus wrote:
> 
> Personally, I consider [pattern matching] an essential 
> feature--arguably *the* essential feature--

After having used Nemerle, I tend to agree.

I haven't gotten around to using this yet, but I did take a look at the 
source and was blown away by how small and simple it is. Kudos!

Oh, and I love that it's much easier to remember how to spell than 
"Algebraic" :)

That said, it would be really nice if D made it possible for a tool like 
this to support more things being defined in-line. For example, in 
Nemerle, it's possible to define a binary tree like this:

---------------------------------
// Mainly from:
// https://github.com/rsdn/nemerle/wiki/Grok-Variants-and-matching
variant Tree {
   | Node {
       left  : Tree;
       elem  : int;
       right : Tree;
     }
   | EmptyLeaf
}
---------------------------------

But AFAIK, in D, each part would have to be defined separately, making 
the overall structure less clear:

---------------------------------
struct Node {
     Tree* left;
     int   elem;
     Tree* right;
}
struct EmptyLeaf {}
alias Tree = SumType!(Node, EmptyLeaf);
---------------------------------

Of course, that's not your lib's fault, just an unfortunate limitation of D.


More information about the Digitalmars-d-announce mailing list