./59 > ben d'après ce qu'on m'a dit le sous-typage implicite est "incompatible" avec l'inférence de type à la caml (par unification), j'ai pas les détails mais il s'agit d'un problème algorithmique d'après ce que j'ai compris...
Moumou :
Sally > Ben en fait je n'ai jamais fait d'OO à la caml, mais je pensais que ça marchait un peu pareil que java, non ? Ie quand on déclare une classe on déclare qu'elle hérite d'une autre, et dans ce cas toute fonction qui prend en argument la classe mère peut prendre la classe fille.
Non ça n'a absolument aucun rapport avec java. Une fois qu'un objet est défini on oublie complètement avec quelle classe on l'a défini, une classe peut hériter de plusieurs classes différentes, et si tu veux que deux objets de deux classes différentes qui ont les mêmes méthodes soient considérés comme de types incompatibles (comme en java) il faut masquer les types concrets dans la signature du module (mais dans ce cas autant ne pas utiliser des objets...)
En fait d'un certain point de vue les classes java sont presque plus proches des *modules* caml que des classes caml
./69on : chaine -> caractere -> chaine list = <fun>
> oui pour que ça passe il faut aller jusqu'à # let fonction = (paire_vers_liste : chaine -> chaine -> chaine list :> chaine -> caractere -> chaine list);;
val foncti
sinon il n'arrive pas à voir que la coercition est correcte

BookeldOr > Obj.magic n'est pas faite pour être utilisée dans du code utilisateur hein :P (ce n'est pas un oubli si elle n'est pas documentée ^^). C'est fait juste pour le compilateur et à la rigueur l'interfaçage avec du code C externe...