[Haskell-cafe] Re: Existencial quantification and polymorphic datatypes (actually, components...)

ChrisK haskell at list.mightyreason.com
Tue Jan 20 13:10:42 EST 2009

> Great, thanks! I'm enlightened :)

And no one had to hit you with a stick first!

> 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.

There is also the GADT syntax:

> data SomeNum where SomeNum :: forall a. (Typeable a, Num a) => a -> SomeNum

which is accepted by ghc with the LANGUAGE GADTs extension.

The GADT is more than simple syntactic sugar, it allows for easier use this kind 
of existential type.


More information about the Haskell-Cafe mailing list