[Haskell-cafe] Control.Monad.Cont fun
Thomas Jäger
thjaeger at gmail.com
Tue Jul 26 08:37:51 EDT 2005
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