package core

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type
type 'a t = 'a Base.Hash_set.t
val sexp_of_t : ('a -> Sexplib0.Sexp.t) -> 'a t -> Sexplib0.Sexp.t

We use [@@deriving sexp_of] but not [@@deriving sexp] because we want people to be explicit about the hash and comparison functions used when creating hashtables. One can use Hash_set.Poly.t, which does have [@@deriving sexp], to use polymorphic comparison and hashing.

include Base.Hash_set.Creators with type 'a t := 'a t
val create : ?growth_allowed:bool -> ?size:int -> 'a Base.Hashtbl.Key.t -> 'a t
val of_list : ?growth_allowed:bool -> ?size:int -> 'a Base.Hashtbl.Key.t -> 'a list -> 'a t
include Base.Hash_set.Accessors with type 'a t := 'a t with type 'a elt := 'a Base.Hash_set.elt
include Base.Container.Generic with type 'a t := 'a t with type 'a elt := 'a Base.Hash_set.elt
val length : _ t -> int
val is_empty : _ t -> bool
val iter : 'a t -> f:('a Base.Hash_set.elt -> unit) -> unit
val fold : 'a t -> init:'accum -> f:('accum -> 'a Base.Hash_set.elt -> 'accum) -> 'accum
val fold_result : 'a t -> init:'accum -> f:('accum -> 'a Base.Hash_set.elt -> ('accum, 'e) Base.Result.t) -> ('accum, 'e) Base.Result.t
val fold_until : 'a t -> init:'accum -> f: ('accum -> 'a Base.Hash_set.elt -> ('accum, 'final) Base.Container.Continue_or_stop.t) -> finish:('accum -> 'final) -> 'final
val exists : 'a t -> f:('a Base.Hash_set.elt -> bool) -> bool
val for_all : 'a t -> f:('a Base.Hash_set.elt -> bool) -> bool
val count : 'a t -> f:('a Base.Hash_set.elt -> bool) -> int
val sum : (module Base.Container.Summable with type t = 'sum) -> 'a t -> f:('a Base.Hash_set.elt -> 'sum) -> 'sum
val find : 'a t -> f:('a Base.Hash_set.elt -> bool) -> 'a Base.Hash_set.elt option
val find_map : 'a t -> f:('a Base.Hash_set.elt -> 'b option) -> 'b option
val to_list : 'a t -> 'a Base.Hash_set.elt list
val to_array : 'a t -> 'a Base.Hash_set.elt array
val min_elt : 'a t -> compare:('a Base.Hash_set.elt -> 'a Base.Hash_set.elt -> int) -> 'a Base.Hash_set.elt option
val max_elt : 'a t -> compare:('a Base.Hash_set.elt -> 'a Base.Hash_set.elt -> int) -> 'a Base.Hash_set.elt option
val mem : 'a t -> 'a -> bool

override Container.Generic.mem

val copy : 'a t -> 'a t

preserves the equality function

val add : 'a t -> 'a -> unit
val strict_add : 'a t -> 'a -> unit Base.Or_error.t

strict_add t x returns Ok () if the x was not in t, or an Error if it was.

val strict_add_exn : 'a t -> 'a -> unit
val remove : 'a t -> 'a -> unit
val strict_remove : 'a t -> 'a -> unit Base.Or_error.t

strict_remove t x returns Ok () if the x was in t, or an Error if it was not.

val strict_remove_exn : 'a t -> 'a -> unit
val clear : 'a t -> unit
val equal : 'a t -> 'a t -> bool
val filter : 'a t -> f:('a -> bool) -> 'a t
val filter_inplace : 'a t -> f:('a -> bool) -> unit
val inter : 'key t -> 'key t -> 'key t

inter t1 t2 computes the set intersection of t1 and t2. Runs in O(min(length t1, length t2)). Behavior is undefined if t1 and t2 don't have the same equality function.

val union : 'a t -> 'a t -> 'a t
val diff : 'a t -> 'a t -> 'a t
val of_hashtbl_keys : ('a, _) Base.Hashtbl.t -> 'a t
val to_hashtbl : 'key t -> f:('key -> 'data) -> ('key, 'data) Base.Hashtbl.t
val hashable : 'key t -> 'key Base.Hashable.t
module type Elt_plain = Hashtbl.Key_plain
module type Elt = Hashtbl.Key
module type Elt_binable = Hashtbl.Key_binable
module type S_plain = sig ... end
module type S = sig ... end
module type S_binable = sig ... end
module Using_hashable : sig ... end
module Poly : sig ... end

A hash set that uses polymorphic comparison.

module Make_plain (Elt : Elt_plain) : S_plain with type elt = Elt.t
module Make (Elt : Elt) : S with type elt = Elt.t
module Make_binable (Elt : Elt_binable) : S_binable with type elt = Elt.t
module Make_plain_with_hashable (T : sig ... end) : S_plain with type elt = T.Elt.t
module Make_with_hashable (T : sig ... end) : S with type elt = T.Elt.t
module Make_binable_with_hashable (T : sig ... end) : S_binable with type elt = T.Elt.t
include Base.Hash_set.For_deriving with type 'a t := 'a t
module type M_of_sexp = sig ... end
module type Sexp_of_m = sig ... end
module type Equal_m = sig ... end
module M (Elt : Base.T.T) : sig ... end

M is meant to be used in combination with OCaml applicative functor types:

val sexp_of_m__t : (module Sexp_of_m with type t = 'elt) -> 'elt t -> Base.Sexp.t
val m__t_of_sexp : (module M_of_sexp with type t = 'elt) -> Base.Sexp.t -> 'elt t
val m__t_sexp_grammar : (module Base__.Hash_set_intf.M_sexp_grammar with type t = 'elt) -> 'elt t Sexplib0.Sexp_grammar.t
val equal_m__t : (module Equal_m) -> 'elt t -> 'elt t -> bool
module type M_quickcheck = sig ... end
val quickcheck_generator_m__t : (module M_quickcheck with type t = 'key) -> 'key t Base_quickcheck.Generator.t
val quickcheck_observer_m__t : (module M_quickcheck with type t = 'key) -> 'key t Base_quickcheck.Observer.t
val quickcheck_shrinker_m__t : (module M_quickcheck with type t = 'key) -> 'key t Base_quickcheck.Shrinker.t