On Thu, Sep 17, 2009 at 6:59 AM, Cristiano Paris <frodo@theshire.org> wrote:
On Thu, Sep 17, 2009 at 8:36 AM, Ryan Ingram <ryani.spam@gmail.com> wrote:
> ...
> Explicitly:Ok. But let me be pedantic: where is the universal quantification in
>
> Haskell:
>> test1 :: forall a. a -> Int
>> test1 _ = 1
>> test2 :: (forall a. a) -> Int
>> test2 x = x
>
> explicitly in System F:
>
> test1 = /\a \(x :: a). 1
> test2 = \(x :: forall a. a). x @Int
>
> /\ is type-level lambda, and @ is type-level application.
test1? It seems to me the a is a free variable in test1 while being
closed under universal quantification in test2.