Module Using_comparator.Tree

type ('k, +'v, 'cmp) t
val sexp_of_t : ( 'k -> Sexp.t ) -> ( 'v -> Sexp.t ) -> ( 'cmp -> Sexp.t ) -> ( 'k, 'v, 'cmp ) t -> Sexp.t
val t_of_sexp_direct : comparator:( 'k, 'cmp ) Comparator.t -> ( Sexp.t -> 'k ) -> ( Sexp.t -> 'v ) -> Sexp.t -> ( 'k, 'v, 'cmp ) t
val empty : comparator:( 'a, 'cmp ) Comparator.t -> ( 'a, _, 'cmp ) t
val singleton : comparator:( 'a, 'cmp ) Comparator.t -> 'a -> 'b -> ( 'a, 'b, 'cmp ) t
val of_alist : comparator:( 'a, 'cmp ) Comparator.t -> ('a * 'b) list -> [ `Ok of ( 'a, 'b, 'cmp ) t | `Duplicate_key of 'a ]
val of_alist_or_error : comparator:( 'a, 'cmp ) Comparator.t -> ('a * 'b) list -> ( 'a, 'b, 'cmp ) t Or_error.t
val of_alist_exn : comparator:( 'a, 'cmp ) Comparator.t -> ('a * 'b) list -> ( 'a, 'b, 'cmp ) t
val of_alist_multi : comparator:( 'a, 'cmp ) Comparator.t -> ('a * 'b) list -> ( 'a, 'b list, 'cmp ) t
val of_alist_fold : comparator:( 'a, 'cmp ) Comparator.t -> ('a * 'b) list -> init:'c -> f:( 'c -> 'b -> 'c ) -> ( 'a, 'c, 'cmp ) t
val of_alist_reduce : comparator:( 'a, 'cmp ) Comparator.t -> ('a * 'b) list -> f:( 'b -> 'b -> 'b ) -> ( 'a, 'b, 'cmp ) t
val of_sorted_array : comparator:( 'a, 'cmp ) Comparator.t -> ('a * 'b) array -> ( 'a, 'b, 'cmp ) t Or_error.t
val of_sorted_array_unchecked : comparator:( 'a, 'cmp ) Comparator.t -> ('a * 'b) array -> ( 'a, 'b, 'cmp ) t
val of_increasing_iterator_unchecked : comparator:( 'a, 'cmp ) Comparator.t -> len:int -> f:( int -> 'a * 'b ) -> ( 'a, 'b, 'cmp ) t
val of_increasing_sequence : comparator:( 'a, 'cmp ) Comparator.t -> ('a * 'b) Sequence.t -> ( 'a, 'b, 'cmp ) t Or_error.t
val of_sequence : comparator:( 'a, 'cmp ) Comparator.t -> ('a * 'b) Sequence.t -> [ `Ok of ( 'a, 'b, 'cmp ) t | `Duplicate_key of 'a ]
val of_sequence_or_error : comparator:( 'a, 'cmp ) Comparator.t -> ('a * 'b) Sequence.t -> ( 'a, 'b, 'cmp ) t Or_error.t
val of_sequence_exn : comparator:( 'a, 'cmp ) Comparator.t -> ('a * 'b) Sequence.t -> ( 'a, 'b, 'cmp ) t
val of_sequence_multi : comparator:( 'a, 'cmp ) Comparator.t -> ('a * 'b) Sequence.t -> ( 'a, 'b list, 'cmp ) t
val of_sequence_fold : comparator:( 'a, 'cmp ) Comparator.t -> ('a * 'b) Sequence.t -> init:'c -> f:( 'c -> 'b -> 'c ) -> ( 'a, 'c, 'cmp ) t
val of_sequence_reduce : comparator:( 'a, 'cmp ) Comparator.t -> ('a * 'b) Sequence.t -> f:( 'b -> 'b -> 'b ) -> ( 'a, 'b, 'cmp ) t
val 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 ) t
val invariants : comparator:( 'a, 'cmp ) Comparator.t -> ( 'a, 'b, 'cmp ) t -> bool
val is_empty : ( 'a, 'b, 'cmp ) t -> bool
val length : ( 'a, 'b, 'cmp ) t -> int
val 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 ) t
val set : comparator:( 'a, 'cmp ) Comparator.t -> ( 'a, 'b, 'cmp ) t -> key:'a -> data:'b -> ( 'a, 'b, 'cmp ) t
val add_multi : comparator:( 'a, 'cmp ) Comparator.t -> ( 'a, 'b list, 'cmp ) t -> key:'a -> data:'b -> ( 'a, 'b list, 'cmp ) t
val remove_multi : comparator:( 'a, 'cmp ) Comparator.t -> ( 'a, 'b list, 'cmp ) t -> 'a -> ( 'a, 'b list, 'cmp ) t
val find_multi : comparator:( 'a, 'cmp ) Comparator.t -> ( 'a, 'b list, 'cmp ) t -> 'a -> 'b list
val change : comparator:( 'a, 'cmp ) Comparator.t -> ( 'a, 'b, 'cmp ) t -> 'a -> f:( 'b option -> 'b option ) -> ( 'a, 'b, 'cmp ) t
val update : comparator:( 'a, 'cmp ) Comparator.t -> ( 'a, 'b, 'cmp ) t -> 'a -> f:( 'b option -> 'b ) -> ( 'a, 'b, 'cmp ) t
val find : comparator:( 'a, 'cmp ) Comparator.t -> ( 'a, 'b, 'cmp ) t -> 'a -> 'b option
val find_exn : comparator:( 'a, 'cmp ) Comparator.t -> ( 'a, 'b, 'cmp ) t -> 'a -> 'b
val remove : comparator:( 'a, 'cmp ) Comparator.t -> ( 'a, 'b, 'cmp ) t -> 'a -> ( 'a, 'b, 'cmp ) t
val mem : comparator:( 'a, 'cmp ) Comparator.t -> ( 'a, 'b, 'cmp ) t -> 'a -> bool
val iter_keys : ( 'a, _, 'cmp ) t -> f:( 'a -> unit ) -> unit
val iter : ( _, 'b, 'cmp ) t -> f:( 'b -> unit ) -> unit
val iteri : ( 'a, 'b, 'cmp ) t -> f:( key:'a -> data:'b -> unit ) -> unit
val iteri_until : ( 'a, 'b, 'cmp ) t -> f:( key:'a -> data:'b -> Base__Map_intf.Continue_or_stop.t ) -> Base__Map_intf.Finished_or_unfinished.t
val 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 ) -> unit
val map : ( 'a, 'b, 'cmp ) t -> f:( 'b -> 'c ) -> ( 'a, 'c, 'cmp ) t
val mapi : ( 'a, 'b, 'cmp ) t -> f:( key:'a -> data:'b -> 'c ) -> ( 'a, 'c, 'cmp ) t
val fold : ( 'a, 'b, _ ) t -> init:'c -> f:( key:'a -> data:'b -> 'c -> 'c ) -> 'c
val fold_right : ( 'a, 'b, _ ) t -> init:'c -> f:( key:'a -> data:'b -> 'c -> 'c ) -> 'c
val 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 ) -> 'd
val filter_keys : comparator:( 'a, 'cmp ) Comparator.t -> ( 'a, 'b, 'cmp ) t -> f:( 'a -> bool ) -> ( 'a, 'b, 'cmp ) t
val filter : comparator:( 'a, 'cmp ) Comparator.t -> ( 'a, 'b, 'cmp ) t -> f:( 'b -> bool ) -> ( 'a, 'b, 'cmp ) t
val filteri : comparator:( 'a, 'cmp ) Comparator.t -> ( 'a, 'b, 'cmp ) t -> f:( key:'a -> data:'b -> bool ) -> ( 'a, 'b, 'cmp ) t
val filter_map : comparator:( 'a, 'cmp ) Comparator.t -> ( 'a, 'b, 'cmp ) t -> f:( 'b -> 'c option ) -> ( 'a, 'c, 'cmp ) t
val filter_mapi : comparator:( 'a, 'cmp ) Comparator.t -> ( 'a, 'b, 'cmp ) t -> f:( key:'a -> data:'b -> 'c option ) -> ( 'a, 'c, 'cmp ) t
val 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 ) t
val partition_map : comparator:( 'a, 'cmp ) Comparator.t -> ( 'a, 'b, 'cmp ) t -> f:( 'b -> ( 'c, 'd ) Either.t ) -> ( 'a, 'c, 'cmp ) t * ( 'a, 'd, 'cmp ) t
val partitioni_tf : comparator:( 'a, 'cmp ) Comparator.t -> ( 'a, 'b, 'cmp ) t -> f:( key:'a -> data:'b -> bool ) -> ( 'a, 'b, 'cmp ) t * ( 'a, 'b, 'cmp ) t
val partition_tf : comparator:( 'a, 'cmp ) Comparator.t -> ( 'a, 'b, 'cmp ) t -> f:( 'b -> bool ) -> ( 'a, 'b, 'cmp ) t * ( 'a, 'b, 'cmp ) t
val combine_errors : comparator:( 'a, 'cmp ) Comparator.t -> ( 'a, 'b Or_error.t, 'cmp ) t -> ( 'a, 'b, 'cmp ) t Or_error.t
val compare_direct : comparator:( 'a, 'cmp ) Comparator.t -> ( 'b -> 'b -> int ) -> ( 'a, 'b, 'cmp ) t -> ( 'a, 'b, 'cmp ) t -> int
val equal : comparator:( 'a, 'cmp ) Comparator.t -> ( 'b -> 'b -> bool ) -> ( 'a, 'b, 'cmp ) t -> ( 'a, 'b, 'cmp ) t -> bool
val keys : ( 'a, _, _ ) t -> 'a list
val data : ( _, 'b, _ ) t -> 'b list
val to_alist : ?key_order:[ `Increasing | `Decreasing ] -> ( 'a, 'b, _ ) t -> ('a * 'b) list
val validate : name:( 'a -> string ) -> 'b Validate.check -> ( 'a, 'b, _ ) t Validate.check
val validatei : name:( 'a -> string ) -> ('a * 'b) Validate.check -> ( 'a, 'b, _ ) t Validate.check
val 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 ) t
val 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.t
val 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 ) -> 'c
val min_elt : ( 'a, 'b, 'cmp ) t -> ('a * 'b) option
val min_elt_exn : ( 'a, 'b, 'cmp ) t -> 'a * 'b
val max_elt : ( 'a, 'b, 'cmp ) t -> ('a * 'b) option
val max_elt_exn : ( 'a, 'b, 'cmp ) t -> 'a * 'b
val for_all : ( 'a, 'b, 'cmp ) t -> f:( 'b -> bool ) -> bool
val for_alli : ( 'a, 'b, 'cmp ) t -> f:( key:'a -> data:'b -> bool ) -> bool
val exists : ( 'a, 'b, 'cmp ) t -> f:( 'b -> bool ) -> bool
val existsi : ( 'a, 'b, 'cmp ) t -> f:( key:'a -> data:'b -> bool ) -> bool
val count : ( 'a, 'b, 'cmp ) t -> f:( 'b -> bool ) -> int
val counti : ( 'a, 'b, 'cmp ) t -> f:( key:'a -> data:'b -> bool ) -> int
val split : comparator:( 'a, 'cmp ) Comparator.t -> ( 'a, 'b, 'cmp ) t -> 'a -> ( 'a, 'b, 'cmp ) t * ('a * 'b) option * ( 'a, 'b, 'cmp ) t
val 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 subrange : comparator:( 'a, 'cmp ) Comparator.t -> ( 'a, 'b, 'cmp ) t -> lower_bound:'a Maybe_bound.t -> upper_bound:'a Maybe_bound.t -> ( 'a, 'b, 'cmp ) t
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 ) -> 'c
val range_to_alist : comparator:( 'a, 'cmp ) Comparator.t -> ( 'a, 'b, 'cmp ) t -> min:'a -> max:'a -> ('a * 'b) list
val 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) option
val nth : comparator:( 'a, 'cmp ) Comparator.t -> ( 'a, 'b, 'cmp ) t -> int -> ('a * 'b) option
val nth_exn : comparator:( 'a, 'cmp ) Comparator.t -> ( 'a, 'b, 'cmp ) t -> int -> 'a * 'b
val rank : comparator:( 'a, 'cmp ) Comparator.t -> ( 'a, 'b, 'cmp ) t -> 'a -> int option
val to_tree : ( 'a, 'b, 'cmp ) t -> ( 'a, 'b, 'cmp ) t
val 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.t
val 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) option
val empty_without_value_restriction : ( _, _, _ ) t