Datatype99: C99 with Sum Types, v0.1.0
What is this sorcery?    #include 
    
    datatype(
            BinaryTree,
            (Leaf, int),
            (Node, struct BinaryTree *, int, struct BinaryTree *)
    );


What kind of preprocessor black magic can you do so that this code compiles?  I don't dare to open the file datatype99.h lest it casts a dark spell on me.