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

        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')