[Haskell-cafe] A curios monad

Andrew Coppin andrewcoppin at btinternet.com
Sat Dec 13 18:00:49 EST 2008


David Menendez wrote:
> On Thu, Dec 11, 2008 at 1:48 PM, Andrew Coppin
> <andrewcoppin at btinternet.com> wrote:
>   
>> BTW, does anybody know how rank-N types are different from existential
>> types?
>>     
>
> You mean the Haskell extensions?
>
> ExistentialQuantification lets you define types such as,
>
>     data SomeNum = forall a. Num a => SomeNum a
>
> RankNTypes lets you nest foralls arbitrarily deep in type signatures,
>
>     callCC :: ((forall b. a -> m b) -> m a) -> m a   -- this is rank-3
>
> RankNTypes implies ExistentialQuantification (among others).
>   

So how is

  foo :: ((forall b. a -> m b) -> m a) -> m a

different from

  bar :: forall b. ((a -> m b) -> m a) -> m a

then?



More information about the Haskell-Cafe mailing list