# datatype (Maybe a)
* NONE
* SOME x:a
# datatype (List a)
* NIL
* CONS head:a tail:(List a)
# datatype (Tree a)
* LEAF val:a
* NODE left:(Tree a) right:(Tree a)
# record (Point2D)
| POINT
* x : Nat
* y : Nat
# record (Person)
| PERSON
* name : Str
* age : Nat
# record (Config a)
| CONFIG
* enabled : Bit
* value : a