X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=ptset.mli;h=2eef80cff3b6615869affb6c68d274c566c21780;hb=25dd7fcc77c2188732d96d5ff98d759bb81737cb;hp=47c28ba540cd91fbebcf6396a57720e7e52649a1;hpb=7489c542a7b7357a1c2bbc436d1d77c601833d3b;p=SXSI%2Fxpathcomp.git diff --git a/ptset.mli b/ptset.mli index 47c28ba..2eef80c 100644 --- a/ptset.mli +++ b/ptset.mli @@ -22,74 +22,51 @@ [Set]. The representation is unique and thus structural comparison can be performed on Patricia trees. *) -type t - -type elt = int - -val empty : t - -val is_empty : t -> bool - -val mem : int -> t -> bool - -val add : int -> t -> t - -val singleton : int -> t - -val remove : int -> t -> t - -val union : t -> t -> t - -val subset : t -> t -> bool - -val inter : t -> t -> t - -val diff : t -> t -> t - -val equal : t -> t -> bool - -val compare : t -> t -> int - -val elements : t -> int list - -val choose : t -> int - -val cardinal : t -> int - -val iter : (int -> unit) -> t -> unit - -val fold : (int -> 'a -> 'a) -> t -> 'a -> 'a - -val for_all : (int -> bool) -> t -> bool - -val exists : (int -> bool) -> t -> bool - -val filter : (int -> bool) -> t -> t - -val partition : (int -> bool) -> t -> t * t - -val split : int -> t -> t * bool * t - -(*s Warning: [min_elt] and [max_elt] are linear w.r.t. the size of the - set. In other words, [min_elt t] is barely more efficient than [fold - min t (choose t)]. *) - -val min_elt : t -> int -val max_elt : t -> int - -(*s Additional functions not appearing in the signature [Set.S] from ocaml - standard library. *) - -(* [intersect u v] determines if sets [u] and [v] have a non-empty - intersection. *) - +module type S = +sig + + type elt + type t + val empty : t + val is_empty : t -> bool + val mem : elt -> t -> bool + val add : elt -> t -> t + val singleton : elt -> t + val remove : elt -> t -> t + val union : t -> t -> t + val inter : t -> t -> t + val diff : t -> t -> t + val compare : t -> t -> int + val equal : t -> t -> bool + val subset : t -> t -> bool + val iter : (elt -> unit) -> t -> unit + val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a + val for_all : (elt -> bool) -> t -> bool + val exists : (elt -> bool) -> t -> bool + val filter : (elt -> bool) -> t -> t + val partition : (elt -> bool) -> t -> t * t + val cardinal : t -> int + val elements : t -> elt list + val min_elt : t -> elt + val max_elt : t -> elt + val choose : t -> elt + val split : elt -> t -> t * bool * t + (*s Additional functions not appearing in the signature [Set.S] from ocaml + standard library. *) + + (* [intersect u v] determines if sets [u] and [v] have a non-empty + intersection. *) + val intersect : t -> t -> bool -val is_singleton : t -> bool +val is_singleton : t -> bool +val mem_union : t -> t -> t val hash : t -> int +val uid : t -> int +val uncons : t -> elt * t +val from_list : elt list -> t +end -val from_list : int list -> t - -type int_vector -val to_int_vector : t -> int_vector +module Int : S with type elt = int +module Make ( H : Hcons.S ) : S with type elt = H.t