• # Un début de solution

    Posté par . 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

    module A_marche_pas:(Ai with type b = Int_set.elt) = A(Int_set);;
    (*et on se retrouve avec
    module A_marche_pas :
     sig type a
     type b = Int_set.elt
     val f : b -> a
     end
    et 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 :)

    Please do not feed the trolls