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