Using_comparator.TreeSourceA 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 :
('a -> Sexplib0.Sexp.t) ->
('cmp -> Sexplib0.Sexp.t) ->
('a, 'cmp) t ->
Sexplib0.Sexp.tval t_of_sexp_direct :
comparator:('elt, 'cmp) Comparator.t ->
(Sexp.t -> 'elt) ->
Sexp.t ->
('elt, 'cmp) tinclude Container.Generic
with type ('a, 'cmp, _) t := ('a, 'cmp) t
with type 'a elt := 'aval sum :
(module Container.Summable with type t = 'sum) ->
('a, _) t ->
f:('a -> 'sum) ->
'sumoverride Container's mem
val union :
comparator:('a, 'cmp) Comparator.t ->
('a, 'cmp) t ->
('a, 'cmp) t ->
('a, 'cmp) tval inter :
comparator:('a, 'cmp) Comparator.t ->
('a, 'cmp) t ->
('a, 'cmp) t ->
('a, 'cmp) tval symmetric_diff :
comparator:('a, 'cmp) Comparator.t ->
('a, 'cmp) t ->
('a, 'cmp) t ->
('a, 'a) Either.t Sequence.tval compare_direct :
comparator:('a, 'cmp) Comparator.t ->
('a, 'cmp) t ->
('a, 'cmp) t ->
intval is_subset :
comparator:('a, 'cmp) Comparator.t ->
('a, 'cmp) t ->
of_:('a, 'cmp) t ->
boolval fold_until :
('a, _) t ->
init:'acc ->
f:('acc -> 'a -> ('acc, 'final) Container.Continue_or_stop.t) ->
finish:('acc -> 'final) ->
'finalval iter2 :
comparator:('a, 'cmp) Comparator.t ->
('a, 'cmp) t ->
('a, 'cmp) t ->
f:([ `Left of 'a | `Right of 'a | `Both of 'a * 'a ] -> unit) ->
unitval split :
comparator:('a, 'cmp) Comparator.t ->
('a, 'cmp) t ->
'a ->
('a, 'cmp) t * 'a option * ('a, 'cmp) tval split_le_gt :
comparator:('a, 'cmp) Comparator.t ->
('a, 'cmp) t ->
'a ->
('a, 'cmp) t * ('a, 'cmp) tval split_lt_ge :
comparator:('a, 'cmp) Comparator.t ->
('a, 'cmp) t ->
'a ->
('a, 'cmp) t * ('a, 'cmp) tval to_sequence :
comparator:('a, 'cmp) Comparator.t ->
?order:[ `Increasing | `Decreasing ] ->
?greater_or_equal_to:'a ->
?less_or_equal_to:'a ->
('a, 'cmp) t ->
'a Sequence.tval binary_search :
comparator:('a, 'cmp) Comparator.t ->
('a, 'cmp) t ->
compare:('a -> 'key -> int) ->
Binary_searchable.Which_target_by_key.t ->
'key ->
'a optionval binary_search_segmented :
comparator:('a, 'cmp) Comparator.t ->
('a, 'cmp) t ->
segment_of:('a -> [ `Left | `Right ]) ->
Binary_searchable.Which_target_by_segment.t ->
'a optionval merge_to_sequence :
comparator:('a, 'cmp) Comparator.t ->
?order:[ `Increasing | `Decreasing ] ->
?greater_or_equal_to:'a ->
?less_or_equal_to:'a ->
('a, 'cmp) t ->
('a, 'cmp) t ->
('a, 'a) Sequence.Merge_with_duplicates_element.t Sequence.tval of_sorted_array :
comparator:('a, 'cmp) Comparator.t ->
'a array ->
('a, 'cmp) t Or_error.tval of_sorted_array_unchecked :
comparator:('a, 'cmp) Comparator.t ->
'a array ->
('a, 'cmp) tval of_increasing_iterator_unchecked :
comparator:('a, 'cmp) Comparator.t ->
len:int ->
f:(int -> 'a) ->
('a, 'cmp) tThe 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 argumentSet.Poly.map -- comparator is polymorphic comparisonFoo.Set.map -- comparator is Foo.comparatorval filter_map :
comparator:('b, 'cmp) Comparator.t ->
('a, _) t ->
f:('a -> 'b option) ->
('b, 'cmp) t