Hi all, While trying to convert Haskell statements like this to Perl 6: data Cxt = CxtVoid -- ^ Context that isn't expecting any values | CxtItem !Type -- ^ Context expecting a value of the specified type | CxtSlurpy !Type -- ^ Context expecting multiple values of the -- specified type deriving (Eq, Show, Ord) I'd like to be able to write it something like this: type Cxt is CxtVoid | CxtItem of Type | CxtSlurpy of Type does (Eq, Show, Ord); To be a shorthand for: type CxtVoid; type CxtItem of Type; type CxtSlurpy of Type; type Perl::Cxt is CxtVoid | CxtItem | CxtSlurpy does Eq does Show does Ord; Is this overloading the 'of' operator too far? For many there will be a lot of new concepts there. For a start, I'm assuming that "of" is being used as a higher order type definition, much like "Array of Wotsits" would declare. Also, there is a type there - CxtVoid - which is nothing but a Type! No representation. Of course, if you have a variable of type Cxt, and it is a CxtVoid, then that will need to be represented in some way. But you generally wouldn't care how. An alternative might be to try to shoe-horn the concepts into Roles etc. Who knows, perhaps they'll even fit! :-) Sam.