Module Using_comparator.Tree
val empty : comparator:( 'a, 'cmp ) Comparator.t -> ( 'a, _, 'cmp ) tval singleton :
comparator:( 'a, 'cmp ) Comparator.t ->
'a ->
'b ->
( 'a, 'b, 'cmp ) tval of_alist :
comparator:( 'a, 'cmp ) Comparator.t ->
('a * 'b) list ->
[ `Ok of ( 'a, 'b, 'cmp ) t | `Duplicate_key of 'a ]val of_alist_exn :
comparator:( 'a, 'cmp ) Comparator.t ->
('a * 'b) list ->
( 'a, 'b, 'cmp ) tval of_alist_multi :
comparator:( 'a, 'cmp ) Comparator.t ->
('a * 'b) list ->
( 'a, 'b list, 'cmp ) tval of_alist_fold :
comparator:( 'a, 'cmp ) Comparator.t ->
('a * 'b) list ->
init:'c ->
f:( 'c -> 'b -> 'c ) ->
( 'a, 'c, 'cmp ) tval of_alist_reduce :
comparator:( 'a, 'cmp ) Comparator.t ->
('a * 'b) list ->
f:( 'b -> 'b -> 'b ) ->
( 'a, 'b, 'cmp ) tval of_sorted_array_unchecked :
comparator:( 'a, 'cmp ) Comparator.t ->
('a * 'b) array ->
( 'a, 'b, 'cmp ) tval of_increasing_iterator_unchecked :
comparator:( 'a, 'cmp ) Comparator.t ->
len:int ->
f:( int -> 'a * 'b ) ->
( 'a, 'b, 'cmp ) tval of_sequence :
comparator:( 'a, 'cmp ) Comparator.t ->
('a * 'b) Sequence.t ->
[ `Ok of ( 'a, 'b, 'cmp ) t | `Duplicate_key of 'a ]val of_sequence_fold :
comparator:( 'a, 'cmp ) Comparator.t ->
('a * 'b) Sequence.t ->
init:'c ->
f:( 'c -> 'b -> 'c ) ->
( 'a, 'c, 'cmp ) tval of_sequence_reduce :
comparator:( 'a, 'cmp ) Comparator.t ->
('a * 'b) Sequence.t ->
f:( 'b -> 'b -> 'b ) ->
( 'a, 'b, 'cmp ) tval of_iteri :
comparator:( 'a, 'cmp ) Comparator.t ->
iteri:( f:( key:'a -> data:'b -> unit ) -> unit ) ->
[ `Ok of ( 'a, 'b, 'cmp ) t | `Duplicate_key of 'a ]val of_tree :
comparator:( 'a, 'cmp ) Comparator.t ->
( 'a, 'b, 'cmp ) t ->
( 'a, 'b, 'cmp ) tval invariants :
comparator:( 'a, 'cmp ) Comparator.t ->
( 'a, 'b, 'cmp ) t ->
boolval is_empty : ( 'a, 'b, 'cmp ) t -> boolval length : ( 'a, 'b, 'cmp ) t -> intval add :
comparator:( 'a, 'cmp ) Comparator.t ->
( 'a, 'b, 'cmp ) t ->
key:'a ->
data:'b ->
[ `Ok of ( 'a, 'b, 'cmp ) t | `Duplicate ]val add_exn :
comparator:( 'a, 'cmp ) Comparator.t ->
( 'a, 'b, 'cmp ) t ->
key:'a ->
data:'b ->
( 'a, 'b, 'cmp ) tval set :
comparator:( 'a, 'cmp ) Comparator.t ->
( 'a, 'b, 'cmp ) t ->
key:'a ->
data:'b ->
( 'a, 'b, 'cmp ) tval add_multi :
comparator:( 'a, 'cmp ) Comparator.t ->
( 'a, 'b list, 'cmp ) t ->
key:'a ->
data:'b ->
( 'a, 'b list, 'cmp ) tval remove_multi :
comparator:( 'a, 'cmp ) Comparator.t ->
( 'a, 'b list, 'cmp ) t ->
'a ->
( 'a, 'b list, 'cmp ) tval find_multi :
comparator:( 'a, 'cmp ) Comparator.t ->
( 'a, 'b list, 'cmp ) t ->
'a ->
'b listval change :
comparator:( 'a, 'cmp ) Comparator.t ->
( 'a, 'b, 'cmp ) t ->
'a ->
f:( 'b option -> 'b option ) ->
( 'a, 'b, 'cmp ) tval update :
comparator:( 'a, 'cmp ) Comparator.t ->
( 'a, 'b, 'cmp ) t ->
'a ->
f:( 'b option -> 'b ) ->
( 'a, 'b, 'cmp ) tval find :
comparator:( 'a, 'cmp ) Comparator.t ->
( 'a, 'b, 'cmp ) t ->
'a ->
'b optionval find_exn :
comparator:( 'a, 'cmp ) Comparator.t ->
( 'a, 'b, 'cmp ) t ->
'a ->
'bval remove :
comparator:( 'a, 'cmp ) Comparator.t ->
( 'a, 'b, 'cmp ) t ->
'a ->
( 'a, 'b, 'cmp ) tval mem :
comparator:( 'a, 'cmp ) Comparator.t ->
( 'a, 'b, 'cmp ) t ->
'a ->
boolval iter_keys : ( 'a, _, 'cmp ) t -> f:( 'a -> unit ) -> unitval iter : ( _, 'b, 'cmp ) t -> f:( 'b -> unit ) -> unitval iteri : ( 'a, 'b, 'cmp ) t -> f:( key:'a -> data:'b -> unit ) -> unitval iteri_until :
( 'a, 'b, 'cmp ) t ->
f:( key:'a -> data:'b -> Base__Map_intf.Continue_or_stop.t ) ->
Base__Map_intf.Finished_or_unfinished.tval iter2 :
comparator:( 'a, 'cmp ) Comparator.t ->
( 'a, 'b, 'cmp ) t ->
( 'a, 'c, 'cmp ) t ->
f:
( key:'a ->
data:[ `Left of 'b | `Right of 'c | `Both of 'b * 'c ] ->
unit ) ->
unitval map : ( 'a, 'b, 'cmp ) t -> f:( 'b -> 'c ) -> ( 'a, 'c, 'cmp ) tval mapi :
( 'a, 'b, 'cmp ) t ->
f:( key:'a -> data:'b -> 'c ) ->
( 'a, 'c, 'cmp ) tval fold :
( 'a, 'b, _ ) t ->
init:'c ->
f:( key:'a -> data:'b -> 'c -> 'c ) ->
'cval fold_right :
( 'a, 'b, _ ) t ->
init:'c ->
f:( key:'a -> data:'b -> 'c -> 'c ) ->
'cval fold2 :
comparator:( 'a, 'cmp ) Comparator.t ->
( 'a, 'b, 'cmp ) t ->
( 'a, 'c, 'cmp ) t ->
init:'d ->
f:
( key:'a ->
data:[ `Left of 'b | `Right of 'c | `Both of 'b * 'c ] ->
'd ->
'd ) ->
'dval filter_keys :
comparator:( 'a, 'cmp ) Comparator.t ->
( 'a, 'b, 'cmp ) t ->
f:( 'a -> bool ) ->
( 'a, 'b, 'cmp ) tval filter :
comparator:( 'a, 'cmp ) Comparator.t ->
( 'a, 'b, 'cmp ) t ->
f:( 'b -> bool ) ->
( 'a, 'b, 'cmp ) tval filteri :
comparator:( 'a, 'cmp ) Comparator.t ->
( 'a, 'b, 'cmp ) t ->
f:( key:'a -> data:'b -> bool ) ->
( 'a, 'b, 'cmp ) tval filter_map :
comparator:( 'a, 'cmp ) Comparator.t ->
( 'a, 'b, 'cmp ) t ->
f:( 'b -> 'c option ) ->
( 'a, 'c, 'cmp ) tval filter_mapi :
comparator:( 'a, 'cmp ) Comparator.t ->
( 'a, 'b, 'cmp ) t ->
f:( key:'a -> data:'b -> 'c option ) ->
( 'a, 'c, 'cmp ) tval partition_mapi :
comparator:( 'a, 'cmp ) Comparator.t ->
( 'a, 'b, 'cmp ) t ->
f:( key:'a -> data:'b -> ( 'c, 'd ) Either.t ) ->
( 'a, 'c, 'cmp ) t * ( 'a, 'd, 'cmp ) tval partition_map :
comparator:( 'a, 'cmp ) Comparator.t ->
( 'a, 'b, 'cmp ) t ->
f:( 'b -> ( 'c, 'd ) Either.t ) ->
( 'a, 'c, 'cmp ) t * ( 'a, 'd, 'cmp ) tval partitioni_tf :
comparator:( 'a, 'cmp ) Comparator.t ->
( 'a, 'b, 'cmp ) t ->
f:( key:'a -> data:'b -> bool ) ->
( 'a, 'b, 'cmp ) t * ( 'a, 'b, 'cmp ) tval partition_tf :
comparator:( 'a, 'cmp ) Comparator.t ->
( 'a, 'b, 'cmp ) t ->
f:( 'b -> bool ) ->
( 'a, 'b, 'cmp ) t * ( 'a, 'b, 'cmp ) tval compare_direct :
comparator:( 'a, 'cmp ) Comparator.t ->
( 'b -> 'b -> int ) ->
( 'a, 'b, 'cmp ) t ->
( 'a, 'b, 'cmp ) t ->
intval equal :
comparator:( 'a, 'cmp ) Comparator.t ->
( 'b -> 'b -> bool ) ->
( 'a, 'b, 'cmp ) t ->
( 'a, 'b, 'cmp ) t ->
boolval keys : ( 'a, _, _ ) t -> 'a listval data : ( _, 'b, _ ) t -> 'b listval to_alist :
?key_order:[ `Increasing | `Decreasing ] ->
( 'a, 'b, _ ) t ->
('a * 'b) listval merge :
comparator:( 'a, 'cmp ) Comparator.t ->
( 'a, 'b, 'cmp ) t ->
( 'a, 'c, 'cmp ) t ->
f:
( key:'a ->
[ `Left of 'b | `Right of 'c | `Both of 'b * 'c ] ->
'd option ) ->
( 'a, 'd, 'cmp ) tval symmetric_diff :
comparator:( 'a, 'cmp ) Comparator.t ->
( 'a, 'b, 'cmp ) t ->
( 'a, 'b, 'cmp ) t ->
data_equal:( 'b -> 'b -> bool ) ->
('a * [ `Left of 'b | `Right of 'b | `Unequal of 'b * 'b ]) Sequence.tval fold_symmetric_diff :
comparator:( 'a, 'cmp ) Comparator.t ->
( 'a, 'b, 'cmp ) t ->
( 'a, 'b, 'cmp ) t ->
data_equal:( 'b -> 'b -> bool ) ->
init:'c ->
f:( 'c -> ('a * [ `Left of 'b | `Right of 'b | `Unequal of 'b * 'b ]) -> 'c ) ->
'cval min_elt : ( 'a, 'b, 'cmp ) t -> ('a * 'b) optionval min_elt_exn : ( 'a, 'b, 'cmp ) t -> 'a * 'bval max_elt : ( 'a, 'b, 'cmp ) t -> ('a * 'b) optionval max_elt_exn : ( 'a, 'b, 'cmp ) t -> 'a * 'bval for_all : ( 'a, 'b, 'cmp ) t -> f:( 'b -> bool ) -> boolval for_alli : ( 'a, 'b, 'cmp ) t -> f:( key:'a -> data:'b -> bool ) -> boolval exists : ( 'a, 'b, 'cmp ) t -> f:( 'b -> bool ) -> boolval existsi : ( 'a, 'b, 'cmp ) t -> f:( key:'a -> data:'b -> bool ) -> boolval count : ( 'a, 'b, 'cmp ) t -> f:( 'b -> bool ) -> intval counti : ( 'a, 'b, 'cmp ) t -> f:( key:'a -> data:'b -> bool ) -> intval split :
comparator:( 'a, 'cmp ) Comparator.t ->
( 'a, 'b, 'cmp ) t ->
'a ->
( 'a, 'b, 'cmp ) t * ('a * 'b) option * ( 'a, 'b, 'cmp ) tval append :
comparator:( 'a, 'cmp ) Comparator.t ->
lower_part:( 'a, 'b, 'cmp ) t ->
upper_part:( 'a, 'b, 'cmp ) t ->
[ `Ok of ( 'a, 'b, 'cmp ) t | `Overlapping_key_ranges ]val fold_range_inclusive :
comparator:( 'a, 'cmp ) Comparator.t ->
( 'a, 'b, 'cmp ) t ->
min:'a ->
max:'a ->
init:'c ->
f:( key:'a -> data:'b -> 'c -> 'c ) ->
'cval range_to_alist :
comparator:( 'a, 'cmp ) Comparator.t ->
( 'a, 'b, 'cmp ) t ->
min:'a ->
max:'a ->
('a * 'b) listval closest_key :
comparator:( 'a, 'cmp ) Comparator.t ->
( 'a, 'b, 'cmp ) t ->
[ `Greater_or_equal_to | `Greater_than | `Less_or_equal_to | `Less_than ] ->
'a ->
('a * 'b) optionval nth :
comparator:( 'a, 'cmp ) Comparator.t ->
( 'a, 'b, 'cmp ) t ->
int ->
('a * 'b) optionval nth_exn :
comparator:( 'a, 'cmp ) Comparator.t ->
( 'a, 'b, 'cmp ) t ->
int ->
'a * 'bval rank :
comparator:( 'a, 'cmp ) Comparator.t ->
( 'a, 'b, 'cmp ) t ->
'a ->
int optionval to_tree : ( 'a, 'b, 'cmp ) t -> ( 'a, 'b, 'cmp ) tval to_sequence :
comparator:( 'a, 'cmp ) Comparator.t ->
?order:[ `Increasing_key | `Decreasing_key ] ->
?keys_greater_or_equal_to:'a ->
?keys_less_or_equal_to:'a ->
( 'a, 'b, 'cmp ) t ->
('a * 'b) Sequence.tval binary_search :
comparator:( 'k, 'cmp ) Comparator.t ->
( 'k, 'v, 'cmp ) t ->
compare:( key:'k -> data:'v -> '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 ->
('k * 'v) optionval binary_search_segmented :
comparator:( 'k, 'cmp ) Comparator.t ->
( 'k, 'v, 'cmp ) t ->
segment_of:( key:'k -> data:'v -> [ `Left | `Right ] ) ->
[ `Last_on_left | `First_on_right ] ->
('k * 'v) optionval empty_without_value_restriction : ( _, _, _ ) t