GHC.Generics
data Unit
data a :+: b
data a :*: b