[Ur] Incompatible kinds

Adam Chlipala adamc at impredicative.com
Thu Dec 2 10:27:00 EST 2010


Karn Kallio wrote:
>   Wrong kind
> Constructor:  (fn x ::<UNIF:U116>  =>  (fn y ::<UNIF:U116>  =>  x))
>    Have kind:<UNIF:U116>  ->  <UNIF:U116>  ->  <UNIF:U116>
>    Need kind:  B -->  B ->  B ->  B
> Incompatible kinds
> Kind 1:<UNIF:U116>  ->  <UNIF:U116>  ->  <UNIF:U116>
> Kind 2:  B -->  B ->  B ->  B
>
>  From the error message ( incompatible kinds when as I understand it they
> should be compatible ) I think this is an example of incompleteness in the
> kind unification.
>    

You're right.  I've only implemented kind polymorphism in a way similar 
to let-polymorphism in ML.  You can't really treat kind-polymorphic 
constructors as first-class.



More information about the Ur mailing list