Bonjour,
J'ai une signature de module que j'aimerais implanter de deux manières différentes. Les modules doivent définir un type t. L'un des modules définit t comme un tableau. L'autre module définit t comme des Mappe (camllib)
Or la signature contient des fonctions manipulant clairement t comme une structure impérative que les Mappe ne sont pas. (i.e. des fonctions -> unit, dont la sémantique est clairement de faire des modification sur la structure passée en paramètre)
Donc, le type t doit être une structure de donnée modifiable. L'idée la plus simple est de le déclarer dans le second cas comme une référence sur des Mappe. Mais alors, les fonctions ne retournent plus le type désiré, en particulier la fonction empty.
qui du coup n'est plus de type
Code : Sélectionner tout - Visualiser dans une fenêtre à part let empty = ref Mappe.empty
mais de type
Code : Sélectionner tout - Visualiser dans une fenêtre à part val empty : 'a t
Et là... je ne sais pas quoi faire. Non, seulement, je ne comprends pas la différence avec l'implantation avec des tableaux, puisque les tableaux sont une structure de donnée modifiable, mais de plus, je ne sais pas comment modifier la signature de mes modules ou bien comment modifier l'implantation pour avoir le même résultat, mais que ce soit typable.
Code : Sélectionner tout - Visualiser dans une fenêtre à part val empty : '_a t
Pourriez vous m'éclairer sur les solutions succeptibles de résoudre le problème ?
Partager