higher-order typing errors

Dean Herington heringto at cs.unc.edu
Wed Jan 22 18:02:32 EST 2003


I don't understand why GHC (I was using 5.04.2) should reject these two
programs.

========

{-# OPTIONS -fglasgow-exts #-}

swap1 :: (forall a. a -> a, forall a. a -> a -> a)
      -> (forall a. a -> a -> a, forall a. a -> a)
swap1 (a, b) = (b, a)

yields:

Bug2.hs:3: parse error on input `,'

========

{-# OPTIONS -fglasgow-exts #-}

swap2 :: ((forall a. a -> a), (forall a. a -> a -> a))
      -> ((forall a. a -> a -> a), (forall a. a -> a))
swap2 (a, b) = (b, a)

yields:

Bug2.hs:3:
    Illegal polymorphic type: forall a. a -> a
    In the type: (forall a. a -> a, forall a. a -> a -> a)
                 -> (forall a. a -> a -> a, forall a. a -> a)
    While checking the type signature for `swap2'





More information about the Glasgow-haskell-bugs mailing list