sig
type 'a t
val empty : unit -> 'a HashSet.t
val create : int -> 'a -> 'a HashSet.t
val length : 'a HashSet.t -> int
val capacity : 'a HashSet.t -> int
val clear : 'a HashSet.t -> unit
val copy : 'a HashSet.t -> 'a HashSet.t
val mem : 'a HashSet.t -> 'a -> bool
val iter : ('a -> unit) -> 'a HashSet.t -> unit
val add_unsafe : 'a HashSet.t -> 'a -> unit
val copy_resize : 'a HashSet.t -> int -> 'a HashSet.t
val add : 'a HashSet.t -> 'a -> unit
val remove : 'a HashSet.t -> 'a -> unit
val create_from_list : 'a list -> 'a HashSet.t
val bucket_lengths : 'a HashSet.t -> int array
val fold : ('a -> 'b -> 'b) -> 'a HashSet.t -> 'b -> 'b
val for_all : ('a -> bool) -> 'a HashSet.t -> bool
val exists : ('a -> bool) -> 'a HashSet.t -> bool
val keys : 'a HashSet.t -> 'a array
val equal : 'a HashSet.t -> 'a HashSet.t -> bool
val update : 'a HashSet.t -> 'a HashSet.t -> unit
val diff_update : 'a HashSet.t -> 'a HashSet.t -> unit
val symmetric_diff_update : 'a HashSet.t -> 'a HashSet.t -> unit
val inter_update : 'a HashSet.t -> 'a HashSet.t -> unit
val union : 'a HashSet.t -> 'a HashSet.t -> 'a HashSet.t
val diff : 'a HashSet.t -> 'a HashSet.t -> 'a HashSet.t
val symmetric_diff : 'a HashSet.t -> 'a HashSet.t -> 'a HashSet.t
val inter : 'a HashSet.t -> 'a HashSet.t -> 'a HashSet.t
module type HashedType =
sig
type t
val compare : HashSet.HashedType.t -> HashSet.HashedType.t -> int
val hash : HashSet.HashedType.t -> int
end
module type S =
sig
type elt
type t
val empty : unit -> HashSet.S.t
val create : int -> HashSet.S.elt -> HashSet.S.t
val length : HashSet.S.t -> int
val capacity : HashSet.S.t -> int
val mem : HashSet.S.t -> HashSet.S.elt -> bool
val clear : HashSet.S.t -> unit
val copy : HashSet.S.t -> HashSet.S.t
val iter_v : (HashSet.S.elt -> unit) -> HashSet.S.t -> unit
val iter : (HashSet.S.elt -> unit) -> HashSet.S.t -> unit
val add_unsafe : HashSet.S.t -> HashSet.S.elt -> unit
val copy_resize : HashSet.S.t -> int -> HashSet.S.t
val resize : HashSet.S.t -> HashSet.S.elt -> unit
val add : HashSet.S.t -> HashSet.S.elt -> unit
val remove : HashSet.S.t -> HashSet.S.elt -> unit
val create_from_list : HashSet.S.elt list -> HashSet.S.t
val bucket_lengths : HashSet.S.t -> int array
val fold : (HashSet.S.elt -> 'a -> 'a) -> HashSet.S.t -> 'a -> 'a
val for_all : (HashSet.S.elt -> bool) -> HashSet.S.t -> bool
val exists : (HashSet.S.elt -> bool) -> HashSet.S.t -> bool
val keys : HashSet.S.t -> HashSet.S.elt array
val equal : HashSet.S.t -> HashSet.S.t -> bool
val update : HashSet.S.t -> HashSet.S.t -> unit
val diff_update : HashSet.S.t -> HashSet.S.t -> unit
val symmetric_diff_update : HashSet.S.t -> HashSet.S.t -> unit
val inter_update : HashSet.S.t -> HashSet.S.t -> unit
val union : HashSet.S.t -> HashSet.S.t -> HashSet.S.t
val diff : HashSet.S.t -> HashSet.S.t -> HashSet.S.t
val symmetric_diff : HashSet.S.t -> HashSet.S.t -> HashSet.S.t
val inter : HashSet.S.t -> HashSet.S.t -> HashSet.S.t
end
module Make :
functor (H : HashedType) ->
sig
type elt = H.t
type t
val empty : unit -> t
val create : int -> elt -> t
val length : t -> int
val capacity : t -> int
val mem : t -> elt -> bool
val clear : t -> unit
val copy : t -> t
val iter_v : (elt -> unit) -> t -> unit
val iter : (elt -> unit) -> t -> unit
val add_unsafe : t -> elt -> unit
val copy_resize : t -> int -> t
val resize : t -> elt -> unit
val add : t -> elt -> unit
val remove : t -> elt -> unit
val create_from_list : elt list -> t
val bucket_lengths : t -> int array
val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
val for_all : (elt -> bool) -> t -> bool
val exists : (elt -> bool) -> t -> bool
val keys : t -> elt array
val equal : t -> t -> bool
val update : t -> t -> unit
val diff_update : t -> t -> unit
val symmetric_diff_update : t -> t -> unit
val inter_update : t -> t -> unit
val union : t -> t -> t
val diff : t -> t -> t
val symmetric_diff : t -> t -> t
val inter : t -> t -> t
end
end