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 t_of_sexp_direct : comparator:('elt, 'cmp) Comparator.t -> (Sexp.t -> 'elt) -> Sexp.t -> ('elt, 'cmp) tmodule Named : sig ... endinclude Container.S1_phantom_invariant with type ('a, 'b) t := ('a, 'b) t
val mem : ('a, 'b) t -> 'a -> equal:('a -> 'a -> bool) -> boolChecks whether the provided element is there, using equal.
val length : ('a, 'b) t -> intval is_empty : ('a, 'b) t -> boolval iter : ('a, 'b) t -> f:('a -> unit) -> unitval fold : ('a, 'b) t -> init:'accum -> f:('accum -> 'a -> 'accum) -> 'accumfold t ~init ~f returns f (... f (f (f init e1) e2) e3 ...) en, where e1..en are the elements of t.
val fold_result : ('a, 'b) t -> init:'accum -> f:('accum -> 'a -> ('accum, 'e) Result.t) -> ('accum, 'e) Result.tfold_result t ~init ~f is a short-circuiting version of fold that runs in the Result monad. If f returns an Error _, that value is returned without any additional invocations of f.
val fold_until : ('a, 'b) t -> init:'accum -> f:('accum -> 'a -> ('accum, 'final) Base__Container_intf.Export.Continue_or_stop.t) -> finish:('accum -> 'final) -> 'finalfold_until t ~init ~f ~finish is a short-circuiting version of fold. If f returns Stop _ the computation ceases and results in that value. If f returns Continue _, the fold will proceed. If f never returns Stop _, the final result is computed by finish.
Example:
type maybe_negative =
| Found_negative of int
| All_nonnegative of { sum : int }
(** [first_neg_or_sum list] returns the first negative number in [list], if any,
otherwise returns the sum of the list. *)
let first_neg_or_sum =
List.fold_until ~init:0
~f:(fun sum x ->
if x < 0
then Stop (Found_negative x)
else Continue (sum + x))
~finish:(fun sum -> All_nonnegative { sum })
;;
let x = first_neg_or_sum [1; 2; 3; 4; 5]
val x : maybe_negative = All_nonnegative {sum = 15}
let y = first_neg_or_sum [1; 2; -3; 4; 5]
val y : maybe_negative = Found_negative -3val exists : ('a, 'b) t -> f:('a -> bool) -> boolReturns true if and only if there exists an element for which the provided function evaluates to true. This is a short-circuiting operation.
val for_all : ('a, 'b) t -> f:('a -> bool) -> boolReturns true if and only if the provided function evaluates to true for all elements. This is a short-circuiting operation.
val count : ('a, 'b) t -> f:('a -> bool) -> intReturns the number of elements for which the provided function evaluates to true.
val sum : (module Base__Container_intf.Summable with type t = 'sum) -> ('a, 'b) t -> f:('a -> 'sum) -> 'sumReturns the sum of f i for all i in the container.
val find : ('a, 'b) t -> f:('a -> bool) -> 'a optionReturns as an option the first element for which f evaluates to true.
val find_map : ('a, 'b) t -> f:('a -> 'b option) -> 'b optionReturns the first evaluation of f that returns Some, and returns None if there is no such element.
val to_list : ('a, 'b) t -> 'a listval to_array : ('a, 'b) t -> 'a arrayval min_elt : ('a, 'b) t -> compare:('a -> 'a -> int) -> 'a optionReturns a min (resp max) element from the collection using the provided compare function. In case of a tie, the first element encountered while traversing the collection is returned. The implementation uses fold so it has the same complexity as fold. Returns None iff the collection is empty.
val max_elt : ('a, 'b) t -> compare:('a -> 'a -> int) -> 'a optionval invariants : comparator:('a, 'cmp) Comparator.t -> ('a, 'b) t -> boolval mem : comparator:('a, 'cmp) Comparator.t -> ('a, 'b) t -> 'a -> boolval add : comparator:('a, 'cmp) Comparator.t -> ('a, 'b) t -> 'a -> ('a, 'b) tval remove : comparator:('a, 'cmp) Comparator.t -> ('a, 'b) t -> 'a -> ('a, 'b) tval union : comparator:('a, 'cmp) Comparator.t -> ('a, 'b) t -> ('a, 'b) t -> ('a, 'b) tval inter : comparator:('a, 'cmp) Comparator.t -> ('a, 'b) t -> ('a, 'b) t -> ('a, 'b) tval diff : comparator:('a, 'cmp) Comparator.t -> ('a, 'b) t -> ('a, 'b) t -> ('a, 'b) tval symmetric_diff : comparator:('a, 'cmp) Comparator.t -> ('a, 'b) t -> ('a, 'b) t -> ('a, 'a) Either.t Sequence.tval compare_direct : comparator:('a, 'cmp) Comparator.t -> ('a, 'b) t -> ('a, 'b) t -> intval equal : comparator:('a, 'cmp) Comparator.t -> ('a, 'b) t -> ('a, 'b) t -> boolval is_subset : comparator:('a, 'cmp) Comparator.t -> ('a, 'b) t -> of_:('a, 'b) t -> boolval fold_until : ('a, 'b) t -> init:'accum -> f:('accum -> 'a -> ('accum, 'final) Base__Set_intf.Continue_or_stop.t) -> finish:('accum -> 'final) -> 'finalval fold_right : ('a, 'b) t -> init:'accum -> f:('a -> 'accum -> 'accum) -> 'accumval iter2 : comparator:('a, 'cmp) Comparator.t -> ('a, 'b) t -> ('a, 'b) t -> f:([ `Left of 'a | `Right of 'a | `Both of 'a * 'a ] -> unit) -> unitval filter : comparator:('a, 'cmp) Comparator.t -> ('a, 'b) t -> f:('a -> bool) -> ('a, 'b) tval partition_tf : comparator:('a, 'cmp) Comparator.t -> ('a, 'b) t -> f:('a -> bool) -> ('a, 'b) t * ('a, 'b) tval elements : ('a, 'b) t -> 'a listval min_elt : ('a, 'b) t -> 'a optionval min_elt_exn : ('a, 'b) t -> 'aval max_elt : ('a, 'b) t -> 'a optionval max_elt_exn : ('a, 'b) t -> 'aval choose : ('a, 'b) t -> 'a optionval choose_exn : ('a, 'b) t -> 'aval split : comparator:('a, 'cmp) Comparator.t -> ('a, 'b) t -> 'a -> ('a, 'b) t * 'a option * ('a, 'b) tval group_by : comparator:('a, 'cmp) Comparator.t -> ('a, 'b) t -> equiv:('a -> 'a -> bool) -> ('a, 'b) t listval find_exn : ('a, 'b) t -> f:('a -> bool) -> 'aval nth : ('a, 'b) t -> int -> 'a optionval remove_index : comparator:('a, 'cmp) Comparator.t -> ('a, 'b) t -> int -> ('a, 'b) tval to_sequence : comparator:('a, 'cmp) Comparator.t -> ?order:[ `Increasing | `Decreasing ] -> ?greater_or_equal_to:'a -> ?less_or_equal_to:'a -> ('a, 'b) t -> 'a Sequence.tval binary_search : comparator:('a, 'cmp) Comparator.t -> ('a, 'b) t -> compare:('a -> 'key -> int) -> [ `Last_strictly_less_than | `Last_less_than_or_equal_to | `Last_equal_to | `First_equal_to | `First_greater_than_or_equal_to | `First_strictly_greater_than ] -> 'key -> 'a optionval binary_search_segmented : comparator:('a, 'cmp) Comparator.t -> ('a, 'b) t -> segment_of:('a -> [ `Left | `Right ]) -> [ `Last_on_left | `First_on_right ] -> 'a optionval merge_to_sequence : comparator:('a, 'cmp) Comparator.t -> ?order:[ `Increasing | `Decreasing ] -> ?greater_or_equal_to:'a -> ?less_or_equal_to:'a -> ('a, 'b) t -> ('a, 'b) t -> ('a, 'a) Sequence.Merge_with_duplicates_element.t Sequence.tval empty : comparator:('a, 'cmp) Comparator.t -> ('a, 'b) tval singleton : comparator:('a, 'cmp) Comparator.t -> 'a -> ('a, 'b) tval union_list : comparator:('a, 'cmp) Comparator.t -> ('a, 'b) t list -> ('a, 'b) tval of_list : comparator:('a, 'cmp) Comparator.t -> 'a list -> ('a, 'b) tval of_array : comparator:('a, 'cmp) Comparator.t -> 'a array -> ('a, 'b) tval of_sorted_array : comparator:('a, 'cmp) Comparator.t -> 'a array -> ('a, 'b) t Or_error.tval of_sorted_array_unchecked : comparator:('a, 'cmp) Comparator.t -> 'a array -> ('a, 'b) tval of_increasing_iterator_unchecked : comparator:('a, 'cmp) Comparator.t -> len:int -> f:(int -> 'a) -> ('a, 'b) tval stable_dedup_list : comparator:('a, 'cmp) Comparator.t -> 'a list -> 'a listval map : comparator:('b, 'cmp) Comparator.t -> ('a, 'b) t -> f:('a -> 'b) -> ('a, 'b) tval filter_map : comparator:('b, 'cmp) Comparator.t -> ('a, 'b) t -> f:('a -> 'b option) -> ('a, 'b) tval of_tree : comparator:('a, 'cmp) Comparator.t -> ('a, 'b) t -> ('a, 'b) tval empty_without_value_restriction : (_, _) t