'Forall' Polymorphism Question

Ashley Yakeley ashley@semantic.org
Wed, 31 Oct 2001 02:13:39 -0800


I note that GHC by default gives this type for "return id":

    (return id) :: forall m a. (Monad m) => m (a -> a)

Wouldn't this be more general:

    (return id) :: forall m. (Monad m) => m (forall a. a -> a)
    (return return) :: forall m. (Monad m) => m (forall m1 a. (Monad m1) 
=> a -> m1 a)

...?

Is this something GHC could ever do, or are there good reasons why it 
would never work in Haskell?

-- 
Ashley Yakeley, Seattle WA