Why not just do what we do for tuples? Define a bunch of generic types up front:
data Choice2 a b = OneOf2 a | TwoOf2 b
data Choice3 a b c = OneOf3 a | TwoOf3 b | ThreeOf3 c
The module Text.XML.HaXml.OneOfN defines these types up to size 20.
The package HaXml also comes with a small command-line driven generator tool (called MkOneOf) that can automatically write you a OneOfN type (or set of types) of arbitrary finite size.
(Being part of HaXml, it also generates instances of some XML reading/writing classes as well.)
Regards,
Malcolm
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe