I think a feature that has exactly two constructors is completely pointless. Imagine Types:
data StrictOrdering = LT | GT data Ordering' = EQ | NEQ !StrictOrdering
Ordering' type is equivalent to the mentioned Ordering , differing only in "2-construction".
On the other hand, Maybe Bool , Either Bool Bool and Bool very different and do not seem to deserve the same name, except that they are called sum types.
Now you can find some similarities between exists a. Maybe a exists a. Maybe a and Bool , but to specify them you need more restrictions than just "2-constructivity".
source share