
28 Jun
2009
28 Jun
'09
7:24 a.m.
Niklas,
What you really want or mean when you use the classic syntax with existential quantification is
data Foo = Foo (exists a . (Show a) => a)
Having that would make a lot more sense, and would fit well together with the intuition of the classic syntax.
How would you then define data Foo :: * where Foo :: forall a. a -> a -> Foo in which the scope of existentially quantified type variable spans more than one field? Cheers, Stefan