
But how is this: data SomeNum = forall a. SN a different from: data SomeNum = SN (forall a. a)
At a glance they look the same to me — but only the first is accepted by ghc.
Following the link you pointed in the last message, I found this at 8.8.4.1: data T a = T1 (forall b. b -> b -> b) a If I understand properly, it can be activated with -XPolymorphicComponents. It's different from my example, but I would like to know what it does that this can't: data T a = forall b. T1 (b->b->b) a (The last one I think I understand well after the previous message, although I see no use for this particular form, since after pattern match there's no other 'b' value to which we could aply that function field.) Link for convenience: http://www.haskell.org/ghc/docs/latest/html/users_guide/other-type-extension... Maurício