(* Module de trie *) (* type trie le mot est de type 'a, les "caractères" le composant de type 'b *) type ('a,'b) trie (******************************************************************************) (* fonction de création d'un nouveau trie *) (* signature : nouveau : *) (* ('a -> 'b list) -> ('b list -> 'a) -> ('a, 'b) trie = *) (* paramètres : - une fonction de décomposition *) (* mot -> liste de caractères *) (* - une fonction de recomposition *) (* liste de caractères -> mot *) (* résultat : un nouveau trie "vide" *) (******************************************************************************) val nouveau : ('a -> 'b list) -> ('b list -> 'a) -> ('a, 'b) trie (******************************************************************************) (* fonction d'appartenance d'un élément à un trie *) (* signature : appartient : 'a -> ('a, 'b) trie -> bool = *) (* paramètres : - un mot *) (* - un trie *) (* résultat : le résultat booléen du test *) (******************************************************************************) val appartient : 'a -> ('a, 'b) trie -> bool (******************************************************************************) (* fonction d'ajout d'un élément dans un trie *) (* signature : ajout : 'a -> ('a, 'b) trie -> ('a, 'b) trie = *) (* paramètres : - un mot *) (* - un trie *) (* résultat : le trie avec le mot ajouté *) (******************************************************************************) val ajout : 'a -> ('a, 'b) trie -> ('a, 'b) trie (******************************************************************************) (* fonction de retrait d'un élément d'un trie *) (* signature : trie_retrait : 'a -> ('a, 'b) trie -> ('a, 'b) trie = *) (* paramètres : - un mot *) (* - un trie *) (* résultat : le trie avec le mot retiré *) (******************************************************************************) val retrait : 'a -> ('a, 'b) trie -> ('a, 'b) trie (******************************************************************************) (* procédure d'affichage d'un trie *) (* signature : affiche : ('a -> unit) -> ('a, 'b) trie -> unit = *) (* paramètres : - une procédure d'affichage d'un mot *) (* - un trie *) (* résultat : aucun *) (******************************************************************************) val affiche : ('a -> unit) -> ('a, 'b) trie -> unit (* Pour les tests *) val trie_sujet : (string,char) trie