[Haskell-cafe] Moving "forall" over type constructors
Ryan Ingram
ryani.spam at gmail.com
Tue Jun 10 14:28:34 EDT 2008
On 6/10/08, Derek Elkins <derek.a.elkins at gmail.com> wrote:
> This is the lack of impredicativity.
>
> W :: a -> W a
> To get the result type W (forall a. t a), W must instantiate the a in
> W's type to (forall a. t a). Further we then pass it to (.) which has
> type (b -> c) -> (a -> b) -> a -> c and thus require instantiating both
> a and b to higher-rank types. A predicative type system does not allow
> instantiating type variables to quantified types.
Although if I am reading the literature correctly, that definition
will likely typecheck in the next GHC...
http://research.microsoft.com/~simonpj/papers/boxy/
-- ryan
More information about the Haskell-Cafe
mailing list