[Haskell-cafe] type inference question

minh thu noteed at gmail.com
Thu Oct 8 06:08:46 EDT 2009


2009/10/8 Jochem Berndsen <jochem at functor.nl>:
> minh thu wrote:
>> Also, I'd like to know why
>>
>> id id True
>>
>> is permitted but not
>>
>> (\f -> f f True) id
>
> If you want to do this, answer the question "what is the type of (\f ->
> f f True)"?
> You can do this, by the way, using rank-2 types:
>> {-# LANGUAGE Rank2Types, PatternSignatures #-}
>> thisIsAlwaysTrue = (\ (f :: forall a. a -> a) -> f f True) id
>
> Cheers, Jochem

So I learned we should be explicit about f being used polymorphically;
that's what rank-2 types are for. (correct ?)

Thanks,
Thu


More information about the Haskell-Cafe mailing list