46Fermer48
PolluxLe 01/07/2004 à 22:22
Sally
:
de même que le fait qu'il y ait un typage automatique impose, par exemple, que les namespaces des records soit totalement disjoints [une aberration, entre nous soit dit roll]
Euh, certes... les objets n'ont pas cette contrainte-là, pour les records je ne sais pas du tout s'ils ont l'intention de la retirer (en fait je ne sais pas si les records ont une utilité autre que locale maintenant qu'il y a les objets... et la contrainte dont tu parles n'est gênante que si le type record est exporté, sinon, elle ne vaut que pour l'intérieur d'un même fichier, où elle est gérable).

Oué, de toute façon là je vais devoir reprendre un projet en OCaml, donc je vais regarder d'un peu plus près ces histoires d'objets. Malheureusement tout le code existant ressemble plus à du Caml Light qu'à de l'OCaml sad (et c du code récent, moins d'un an) Je sais pas si c juste que le type qui a écrit ça qui connaissait mal les objets, où s'il y a des contraintes trop importantes.
Ceci dit, tu te trompes de cause : ce n'est pas le typage automatique qui est responsable de cette contrainte, c'est l'absence de types polymorphes de la forme {bidule : type, ...} Je suppose que c'est réalisable pour les records puisque ça l'est pour les objets...

Oui, bien sûr ; mais il y a probablement un lien entre les deux (par exemple, il faut éviter les explosions de complexité).


Tiens au fait, est-ce qu'OCaml gère proprement les cross-references (comme Java ou C#), ou est-ce qu'il fait ça d'une manière gore ? (c'est un peu "adouci" par rapport au C avec les .mli faits automatiquement, j'ai l'impression, mais ça doit être assez primaire s'il gère tout comme si c'était tapé dans le top-level -- notamment ça pourrait foirer s'il fait ça naïvement avec des références cycliques, ou des forward references au sein d'un même fichier)