| _ -> 0
;;
-module DiscriminationTreeIndexing =
- functor (I:Indexable) ->
- functor (A:Set.S) ->
+module type DiscriminationTree =
+ sig
+
+ type input
+ type data
+ type dataset
+ type constant_name
+ type t
+
+ val iter : t -> (constant_name path -> dataset -> unit) -> unit
+
+ val empty : t
+ val index : t -> input -> data -> t
+ val remove_index : t -> input -> data -> t
+ val in_index : t -> input -> (data -> bool) -> bool
+ val retrieve_generalizations : t -> input -> dataset
+ val retrieve_unifiables : t -> input -> dataset
+ end
+
+module Make (I:Indexable) (A:Set.S) : DiscriminationTree
+with type constant_name = I.constant_name and type input = I.input
+and type data = A.elt and type dataset = A.t =
+
struct
module OrderedPathStringElement = struct
let compare = I.compare
end
+ type constant_name = I.constant_name
+ type data = A.elt
+ type dataset = A.t
+ type input = I.input
+
module PSMap = Map.Make(OrderedPathStringElement);;
type key = PSMap.key