J'ai trouvé un truc pour que ça marche, mais je reste curieux savoir pourquoi ça ne marchait pas, en effet, en créant le module ainsi
moduleA_marche_pas:(Aiwithtypeb=Int_set.elt)=A(Int_set);;(*et on se retrouve avecmodule A_marche_pas : sig type a type b = Int_set.elt val f : b -> a endet donc A_marche_pas.f (1:int);; de type A_marche_pas.a = <abstr>, comme on veut !*)
Ça marche. Mais je ne comprend pas pourquoi le compilo ne peut deviner cette égalité avec l'inférence. La gestion des modules n'a pas l'air super jolie. Ces signes = qui ne désignent pas une égalité, pas de transparence référentielle…
Je serais ravis de connaître les raisons de ces limites :)
# Un début de solution
Posté par Zylabon . En réponse au message [OCaml] Problème de type avec les modules. Évalué à 2.
J'ai trouvé un truc pour que ça marche, mais je reste curieux savoir pourquoi ça ne marchait pas, en effet, en créant le module ainsi
Ça marche. Mais je ne comprend pas pourquoi le compilo ne peut deviner cette égalité avec l'inférence. La gestion des modules n'a pas l'air super jolie. Ces signes = qui ne désignent pas une égalité, pas de transparence référentielle…
Je serais ravis de connaître les raisons de ces limites :)
Please do not feed the trolls