hirrolot / datatype99 C 1.5K 29 Algebraic data types for C99 type-system algebraic-data-types c99 sum-types