package core

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type
type ('elt, 'cmp) t = ('elt, 'cmp) Base.Set.Using_comparator.Tree.t

A Tree.t contains just the tree data structure that a set is based on, without including the comparator. Accordingly, any operation on a Tree.t must also take as an argument the corresponding comparator.

val sexp_of_t : ('elt -> Sexplib0.Sexp.t) -> ('cmp -> Sexplib0.Sexp.t) -> ('elt, 'cmp) t -> Sexplib0.Sexp.t
include Set_intf.Creators_and_accessors_generic with type ('a, 'b) set := ('a, 'b) t with type ('a, 'b) t := ('a, 'b) t with type ('a, 'b) tree := ('a, 'b) t with type ('a, 'b, 'c) create_options := ('a, 'b, 'c) Base.Set.With_comparator.t with type ('a, 'b, 'c) access_options := ('a, 'b, 'c) Base.Set.With_comparator.t with type 'a elt := 'a with type 'c cmp := 'c with module Named := Named
include Set_intf.Accessors_generic with type ('a, 'b) t := ('a, 'b) t with type ('a, 'b) tree := ('a, 'b) t with type 'a elt := 'a with type 'cmp cmp := 'cmp with type ('a, 'b, 'c) access_options := ('a, 'b, 'c) Base.Set.With_comparator.t with module Named := Named
include Base.Set.Accessors_generic with type ('a, 'b) t := ('a, 'b) t with type ('a, 'b) tree := ('a, 'b) t with type 'a elt := 'a with type 'cmp cmp := 'cmp with type ('a, 'b, 'c) access_options := ('a, 'b, 'c) Base.Set.With_comparator.t with module Named := Named
include Base.Container.Generic with type ('a, 'b) t := ('a, 'b) t with type 'a elt := 'a
val length : (_, _) t -> int
val is_empty : (_, _) t -> bool
val iter : ('a, _) t -> f:('a -> unit) -> unit
val fold : ('a, _) t -> init:'acc -> f:('acc -> 'a -> 'acc) -> 'acc
val fold_result : ('a, _) t -> init:'acc -> f:('acc -> 'a -> ('acc, 'e) Base.Result.t) -> ('acc, 'e) Base.Result.t
val exists : ('a, _) t -> f:('a -> bool) -> bool
val for_all : ('a, _) t -> f:('a -> bool) -> bool
val count : ('a, _) t -> f:('a -> bool) -> int
val sum : (module Base.Container.Summable with type t = 'sum) -> ('a, _) t -> f:('a -> 'sum) -> 'sum
val find : ('a, _) t -> f:('a -> bool) -> 'a option
val find_map : ('a, _) t -> f:('a -> 'b option) -> 'b option
val to_list : ('a, _) t -> 'a list
val to_array : ('a, _) t -> 'a array
val invariants : ('a, 'cmp, ('a, 'cmp) t -> bool) Base.Set.With_comparator.t
val mem : ('a, 'cmp, ('a, 'cmp) t -> 'a -> bool) Base.Set.With_comparator.t

override Container's mem

val add : ('a, 'cmp, ('a, 'cmp) t -> 'a -> ('a, 'cmp) t) Base.Set.With_comparator.t
val remove : ('a, 'cmp, ('a, 'cmp) t -> 'a -> ('a, 'cmp) t) Base.Set.With_comparator.t
val union : ('a, 'cmp, ('a, 'cmp) t -> ('a, 'cmp) t -> ('a, 'cmp) t) Base.Set.With_comparator.t
val inter : ('a, 'cmp, ('a, 'cmp) t -> ('a, 'cmp) t -> ('a, 'cmp) t) Base.Set.With_comparator.t
val diff : ('a, 'cmp, ('a, 'cmp) t -> ('a, 'cmp) t -> ('a, 'cmp) t) Base.Set.With_comparator.t
val symmetric_diff : ('a, 'cmp, ('a, 'cmp) t -> ('a, 'cmp) t -> ('a, 'a) Base.Either.t Base.Sequence.t) Base.Set.With_comparator.t
val compare_direct : ('a, 'cmp, ('a, 'cmp) t -> ('a, 'cmp) t -> int) Base.Set.With_comparator.t
val equal : ('a, 'cmp, ('a, 'cmp) t -> ('a, 'cmp) t -> bool) Base.Set.With_comparator.t
val is_subset : ('a, 'cmp, ('a, 'cmp) t -> of_:('a, 'cmp) t -> bool) Base.Set.With_comparator.t
val are_disjoint : ('a, 'cmp, ('a, 'cmp) t -> ('a, 'cmp) t -> bool) Base.Set.With_comparator.t
val fold_until : ('a, _) t -> init:'acc -> f:('acc -> 'a -> ('acc, 'final) Base.Container.Continue_or_stop.t) -> finish:('acc -> 'final) -> 'final
val fold_right : ('a, _) t -> init:'acc -> f:('a -> 'acc -> 'acc) -> 'acc
val iter2 : ('a, 'cmp, ('a, 'cmp) t -> ('a, 'cmp) t -> f:([ `Left of 'a | `Right of 'a | `Both of 'a * 'a ] -> unit) -> unit) Base.Set.With_comparator.t
val filter : ('a, 'cmp) t -> f:('a -> bool) -> ('a, 'cmp) t
val partition_tf : ('a, 'cmp) t -> f:('a -> bool) -> ('a, 'cmp) t * ('a, 'cmp) t
val elements : ('a, _) t -> 'a list
val min_elt : ('a, _) t -> 'a option
val min_elt_exn : ('a, _) t -> 'a
val max_elt : ('a, _) t -> 'a option
val max_elt_exn : ('a, _) t -> 'a
val choose : ('a, _) t -> 'a option
val choose_exn : ('a, _) t -> 'a
val split : ('a, 'cmp, ('a, 'cmp) t -> 'a -> ('a, 'cmp) t * 'a option * ('a, 'cmp) t) Base.Set.With_comparator.t
val split_le_gt : ('a, 'cmp, ('a, 'cmp) t -> 'a -> ('a, 'cmp) t * ('a, 'cmp) t) Base.Set.With_comparator.t
val split_lt_ge : ('a, 'cmp, ('a, 'cmp) t -> 'a -> ('a, 'cmp) t * ('a, 'cmp) t) Base.Set.With_comparator.t
val group_by : ('a, 'cmp) t -> equiv:('a -> 'a -> bool) -> ('a, 'cmp) t list
val find_exn : ('a, _) t -> f:('a -> bool) -> 'a
val nth : ('a, _) t -> int -> 'a option
val remove_index : ('a, 'cmp, ('a, 'cmp) t -> int -> ('a, 'cmp) t) Base.Set.With_comparator.t
val to_tree : ('a, 'cmp) t -> ('a, 'cmp) t
val to_sequence : ('a, 'cmp, ?order:[ `Increasing | `Decreasing ] -> ?greater_or_equal_to:'a -> ?less_or_equal_to:'a -> ('a, 'cmp) t -> 'a Base.Sequence.t) Base.Set.With_comparator.t
val binary_search_segmented : ('a, 'cmp, ('a, 'cmp) t -> segment_of:('a -> [ `Left | `Right ]) -> Base.Binary_searchable.Which_target_by_segment.t -> 'a option) Base.Set.With_comparator.t
val merge_to_sequence : ('a, 'cmp, ?order:[ `Increasing | `Decreasing ] -> ?greater_or_equal_to:'a -> ?less_or_equal_to:'a -> ('a, 'cmp) t -> ('a, 'cmp) t -> ('a, 'a) Base.Sequence.Merge_with_duplicates_element.t Base.Sequence.t) Base.Set.With_comparator.t
val to_map : ('a, 'cmp, ('a, 'cmp) t -> f:('a -> 'b) -> ('a, 'b, 'cmp) Base.Map.t) Base.Set.With_comparator.t
val quickcheck_observer : 'a Quickcheck.Observer.t -> ('a, 'cmp) t Quickcheck.Observer.t
val quickcheck_shrinker : ('a, 'cmp, 'a Quickcheck.Shrinker.t -> ('a, 'cmp) t Quickcheck.Shrinker.t) Base.Set.With_comparator.t
include Set_intf.Creators_generic with type ('a, 'b) t := ('a, 'b) t with type ('a, 'b) tree := ('a, 'b) t with type 'a elt := 'a with type 'cmp cmp := 'cmp with type ('a, 'b) set := ('a, 'b) t with type ('a, 'b, 'c) create_options := ('a, 'b, 'c) Base.Set.With_comparator.t
include Base.Set.Creators_generic with type ('a, 'b) t := ('a, 'b) t with type ('a, 'b) tree := ('a, 'b) t with type 'a elt := 'a with type 'cmp cmp := 'cmp with type ('a, 'b) set := ('a, 'b) t with type ('a, 'b, 'c) create_options := ('a, 'b, 'c) Base.Set.With_comparator.t
val empty : ('a, 'cmp, ('a, 'cmp) t) Base.Set.With_comparator.t
val singleton : ('a, 'cmp, 'a -> ('a, 'cmp) t) Base.Set.With_comparator.t
val union_list : ('a, 'cmp, ('a, 'cmp) t list -> ('a, 'cmp) t) Base.Set.With_comparator.t
val of_list : ('a, 'cmp, 'a list -> ('a, 'cmp) t) Base.Set.With_comparator.t
val of_sequence : ('a, 'cmp, 'a Base.Sequence.t -> ('a, 'cmp) t) Base.Set.With_comparator.t
val of_array : ('a, 'cmp, 'a array -> ('a, 'cmp) t) Base.Set.With_comparator.t
val of_sorted_array : ('a, 'cmp, 'a array -> ('a, 'cmp) t Base.Or_error.t) Base.Set.With_comparator.t
val of_sorted_array_unchecked : ('a, 'cmp, 'a array -> ('a, 'cmp) t) Base.Set.With_comparator.t
val of_increasing_iterator_unchecked : ('a, 'cmp, len:int -> f:(int -> 'a) -> ('a, 'cmp) t) Base.Set.With_comparator.t
val stable_dedup_list : ('a, _, 'a list -> 'a list) Base.Set.With_comparator.t
val map : ('b, 'cmp, ('a, _) t -> f:('a -> 'b) -> ('b, 'cmp) t) Base.Set.With_comparator.t

The types of map and filter_map are subtle. The input set, ('a, _) set, reflects the fact that these functions take a set of *any* type, with any comparator, while the output set, ('b, 'cmp) t, reflects that the output set has the particular 'cmp of the creation function. The comparator can come in one of three ways, depending on which set module is used

  • Set.map -- comparator comes as an argument
  • Set.Poly.map -- comparator is polymorphic comparison
  • Foo.Set.map -- comparator is Foo.comparator
val filter_map : ('b, 'cmp, ('a, _) t -> f:('a -> 'b option) -> ('b, 'cmp) t) Base.Set.With_comparator.t
val of_tree : ('a, 'cmp, ('a, 'cmp) t -> ('a, 'cmp) t) Base.Set.With_comparator.t
val of_hash_set : ('a, 'cmp, 'a Hash_set.t -> ('a, 'cmp) t) Base.Set.With_comparator.t
val of_hashtbl_keys : ('a, 'cmp, ('a, _) Hashtbl.t -> ('a, 'cmp) t) Base.Set.With_comparator.t
val of_map_keys : ('a, _, 'cmp) Base.Map.t -> ('a, 'cmp) t

Never requires a comparator because it can get one from the input Map.t.

val quickcheck_generator : ('a, 'cmp, 'a Quickcheck.Generator.t -> ('a, 'cmp) t Quickcheck.Generator.t) Base.Set.With_comparator.t