[Haskell-cafe] Re: Higher kinds (and impredicativity?)
Chung-chieh Shan
ccshan at post.harvard.edu
Mon Jan 15 22:30:42 EST 2007
Jim Apple <jbapple+haskell-cafe at gmail.com> wrote in article <ad0e24930701141839r65423008pb7f7c8b3e95073db at mail.gmail.com> in gmane.comp.lang.haskell.cafe:
>
> C, x : k1 |- y : *
> -----------------------
> C |- (\forall x : k1 . y) : *
>
> I'd expect
>
> C, x : k1 |- y : k2
> -----------------------
> C |- (\forall x : k1 . y) : k2
>
> Is there a foundational or an implementation reason for this restriction?
I consider it a foundational reason. You seem to want
(forall (f :: * -> *) . f)
to have kind
* -> *.
But that means that I should be able to apply it to a type, say Int, to
get a type
(forall (f :: * -> *) . f) Int.
What values inhabit this type?
--
Edit this signature at http://www.digitas.harvard.edu/cgi-bin/ken/sig
My mother is a fish.
More information about the Haskell-Cafe
mailing list