L'exemple de base du sous-typage est que {x : int; y : int} est un sous type de {x : int}, mais caml ne sait même pas faire ça. Ca sux un peu, parce que c'est pourtant vachement bien le sous-typage

Evidemment avec ocaml on a l'héritage, qui est sympa aussi, mais pas vraiment aussi bien (il faut explicitement déclarer l'héritage, alors que dans l'exemple plus haut, c'est implicite).
Ce serait pourtant fantastique un truc du genre :
# let f x = x.y;;
val f : ('a with 'a.y = 'b) -> 'b
