Niklas Broberg wrote: > That's what GADTs are for: > > data Flag = HasZoo | NoZoo > > data Foobar a where > Foo :: Foobar a -> Foobar a > Bar :: Foobar a -> Foobar a > Zoo :: Foobar a -> Foobar HasZoo > Ouch #1: This appears to instantly disable deriving the Eq, Ord and Show instances I want. :-/