Je ne comprend toujours pas. Je dois être un peu lent, ou alors je n'ai pas eu affaire aux mêmes cas d'utilisation.
Parce que, en pratique, comment tu fais « mieux » avec ton arbre ?
Quand tu dis « comment tu fais le lien 1 <- toto <- toto_t <- int » .... je te retourne la question avec un arbre : cela n'a rien à voir avec la structure des expressions, c'est simplement ton système de type dans l'absolu qui demande ce genre de résolutions ...
Ce que j'ai dit, c'est simplement que je peux trouver toutes les contraintes de type, exactement comme tu le ferais avec un arbre, et avec une complexité pas trop dramatique ...
De ce que j'ai compris, toi tu vas parcourir l'arbre ... Et à chaque expression inconnue, tu vas retraverser pour trouver ce que cela vaut ? Mais qui te prouve qu'il suffit d'une autre passe ? Qui te dis que tu n'as pas une chaine de contraintes très longue ? Mon algo marche pareil si tu ne fais que des alias tout le long
typedef toto1 int
typedef toto2 toto1
typedef ...
totoN toto = 1
Comment tu fais en parcourant l'arbre ? Mon algorithme débile trouve une chaine de contraintes ... et après il faut résoudre, mais en tout cas il la trouve.
En pratique, pour ocaml, ils récupèrent les contraintes de types, et font un algorithme d'unification un peu amélioré pour résoudre le problème du polymorphisme et trouver les types minimaux des expressions. Mais ils récupèrent « d'un coup » toutes les contraintes (en éliminant peut-être celles qui sont triviales localement).
[^] # Re: Dans l'art voluptueuse de ne rien comprendre
Posté par Aluminium95 . En réponse au journal EDSL et F-algèbres. Évalué à 1.
Je ne comprend toujours pas. Je dois être un peu lent, ou alors je n'ai pas eu affaire aux mêmes cas d'utilisation.
Parce que, en pratique, comment tu fais « mieux » avec ton arbre ?
Quand tu dis « comment tu fais le lien 1 <- toto <- toto_t <- int » .... je te retourne la question avec un arbre : cela n'a rien à voir avec la structure des expressions, c'est simplement ton système de type dans l'absolu qui demande ce genre de résolutions ...
Ce que j'ai dit, c'est simplement que je peux trouver toutes les contraintes de type, exactement comme tu le ferais avec un arbre, et avec une complexité pas trop dramatique ...
De ce que j'ai compris, toi tu vas parcourir l'arbre ... Et à chaque expression inconnue, tu vas retraverser pour trouver ce que cela vaut ? Mais qui te prouve qu'il suffit d'une autre passe ? Qui te dis que tu n'as pas une chaine de contraintes très longue ? Mon algo marche pareil si tu ne fais que des alias tout le long
Comment tu fais en parcourant l'arbre ? Mon algorithme débile trouve une chaine de contraintes ... et après il faut résoudre, mais en tout cas il la trouve.
En pratique, pour ocaml, ils récupèrent les contraintes de types, et font un algorithme d'unification un peu amélioré pour résoudre le problème du polymorphisme et trouver les types minimaux des expressions. Mais ils récupèrent « d'un coup » toutes les contraintes (en éliminant peut-être celles qui sont triviales localement).