Kim-Ee Yeoh <ky3 <at> atamo.com> writes: > data Foo a where > Foo :: Eq a => a -> Foo a > > is equivalent to > > data Foo a = Eq a => Foo a > > but is different from > > data Eq a => Foo a = Foo a ... and nothing in GADTs does what one would naively expect the last declaration to do.