[Haskell-cafe] Control.Monad.Cont fun

Simon Peyton-Jones simonpj at microsoft.com
Wed Jul 27 04:04:59 EDT 2005


Ah I see.  This is really a bug.  GHC6.4 should accept the example.  I've just fixed it.

thanks for mentioning it.

Simon

| -----Original Message-----
| From: Thomas Jäger [mailto:thjaeger at gmail.com]
| Sent: 26 July 2005 13:38
| To: Simon Peyton-Jones
| Cc: glasgow-haskell-bugs at haskell.org
| Subject: Re: [Haskell-cafe] Control.Monad.Cont fun
| 
| Basically, the pre-ghc6.4 way of doing scoped type variables breaks
| down for higher-rank functions. For example
| 
|   foo :: (forall a. a -> b) -> b
|   foo (f :: forall a. a -> b) = f undefined :: b
| 
| is accepted by ghc-6.2 but rejected by the current ghc with an error message
|   Couldn't match `forall a. a -> b' against `forall a. a -> b'
| 
| Of course, in ghc-6.4 we don't need f's type annotation so this will work fine:
| 
|   bar :: forall b. (forall a. a -> b) -> b
|   bar f = f undefined :: b
| 
| But I'm not aware of anything that will work simulateously for both versions.
| 
| Thomas
| 
| On 7/26/05, Simon Peyton-Jones <simonpj at microsoft.com> wrote:
| > Andrew, Thomas
| >
| > Can you send me a self-contained module that elicits the mysterious message (I agree that it is a
| strange one)?    Can you also include the variant that does work.
| >
| > Then I'll look into it.
| >
| > Thanks
| >
| > Simon



More information about the Glasgow-haskell-bugs mailing list