Existentials
Malcolm Wallace
Malcolm.Wallace@cs.york.ac.uk
Thu, 17 Apr 2003 11:56:22 +0100
"Simon Peyton-Jones" <simonpj@microsoft.com> writes:
> GHC and Hugs both do. In fact, GHC supports arbitrary-rank universal
> quantification.
The example I tried failed, so I assumed it wasn't supported.
$ cat Exists.hs
module Exists where
data T = forall a. Enum a => Foo (a->a)
f :: T -> (Int,Bool,Char)
f (Foo g) = (g 0, g False, g 'a')
$ ghc -fglasgow-exts -c Exists.hs
Exists.hs:4:
Couldn't match `Int' against `Bool'
Expected type: Int
Inferred type: Bool
In the first argument of `g', namely `False'
In the definition of `f': (g 0, g False, g 'a')
Regards,
Malcolm