logo       

Re: [Haskell-cafe] Control.Monad.Cont fun: msg#00134

lang.haskell.glasgow.bugs

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@xxxxxxxxxxxxx> 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


<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise