BookeldOr :
oui c'est sympa, et d'ailleurs Obj.magic n'est pas là pour rien 
erf... si !
BookeldOr
:
un truc sympa ça serait de faire un <upcast>
Ben non, comme je l'ai dit à mon avis c'est "by design" que c'est comme ça...
Par exemple ça te garantit que si tu fais une classe "rle_string" qui se comporte comme la classe "string" mais avec un encodage interne différent (par exemple RLE), alors une chaîne RLE donnée :>-ée en string et passée à une fonction se comportera *toujours* comme la même chaîne recréée "from scratch" mais avec l'encodage classique...
(alors que si les upcasts étaient possibles, il se pourrait qu'il y ait des différences de comportement pas forcément facile à détecter entre les deux...)
Pour reprender mon analogie avec le passage de paramètre par référence, ça ne coûterait pas grand chose non plus de faire en sorte que les paramètres soient tjs passés par référence, mais ça pourrait introduire sournoisement des bugs si par hasard un paramètre était modifié sans qu'on s'en rende compte... (i.e. comprendre un bout de code donné juste en le lisant est nettement plus délicat parce que n'importe quelle partie du code peut interagir avec n'importe quelle autre) Du coup ils ont volontairement fait en sorte qu'au moins par défaut, il n'y ait pas de passage par référence -- ça serait peut-être facile à rajouter, mais ils n'en ont pas envie.
PS :
http://www.google.fr/search?q=ocaml+class -> argl, on est les deuxièmes
