TP-programmation-fonctionnelle/TP4/sourceEtu/trie.mli

58 lines
3.5 KiB
OCaml
Raw Permalink Normal View History

2023-06-21 18:13:54 +00:00
(* 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 = <fun> *)
(* 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 = <fun> *)
(* 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 = <fun> *)
(* 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 = <fun> *)
(* 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 = <fun> *)
(* 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