type (!'k, !'v) t = private
| Empty
| Node of {
mutable left : ('k, 'v) t;
key : 'k;
mutable value : 'v;
mutable height : int;
mutable right : ('k, 'v) t;
}
| Leaf of {
key : 'k;
mutable value : 'v;
}
val is_empty : ('a, 'b) t -> bool
val invariant : ('k, 'v) t -> compare:('k -> 'k -> int) -> unit
val add :
('k, 'v) t ->
replace:bool ->
compare:('k -> 'k -> int) ->
added:bool ref ->
key:'k ->
data:'v ->
('k, 'v) t
val first : ('k, 'v) t -> ('k * 'v) option
val last : ('k, 'v) t -> ('k * 'v) option
val find : ('k, 'v) t -> compare:('k -> 'k -> int) -> 'k -> 'v option
val find_and_call :
('k, 'v) t ->
compare:('k -> 'k -> int) ->
'k ->
if_found:('v -> 'a) ->
if_not_found:('k -> 'a) ->
'a
val find_and_call1 :
('k, 'v) t ->
compare:('k -> 'k -> int) ->
'k ->
a:'a ->
if_found:('v -> 'a -> 'b) ->
if_not_found:('k -> 'a -> 'b) ->
'b
val find_and_call2 :
('k, 'v) t ->
compare:('k -> 'k -> int) ->
'k ->
a:'a ->
b:'b ->
if_found:('v -> 'a -> 'b -> 'c) ->
if_not_found:('k -> 'a -> 'b -> 'c) ->
'c
val findi_and_call :
('k, 'v) t ->
compare:('k -> 'k -> int) ->
'k ->
if_found:(key:'k -> data:'v -> 'a) ->
if_not_found:('k -> 'a) ->
'a
val findi_and_call1 :
('k, 'v) t ->
compare:('k -> 'k -> int) ->
'k ->
a:'a ->
if_found:(key:'k -> data:'v -> 'a -> 'b) ->
if_not_found:('k -> 'a -> 'b) ->
'b
val findi_and_call2 :
('k, 'v) t ->
compare:('k -> 'k -> int) ->
'k ->
a:'a ->
b:'b ->
if_found:(key:'k -> data:'v -> 'a -> 'b -> 'c) ->
if_not_found:('k -> 'a -> 'b -> 'c) ->
'c
val mem : ('k, 'v) t -> compare:('k -> 'k -> int) -> 'k -> bool
val remove :
('k, 'v) t ->
removed:bool ref ->
compare:('k -> 'k -> int) ->
'k ->
('k, 'v) t
val fold :
('k, 'v) t ->
init:'acc ->
f:(key:'k -> data:'v -> 'acc -> 'acc) ->
'acc
val iter : ('k, 'v) t -> f:(key:'k -> data:'v -> unit) -> unit
val mapi_inplace : ('k, 'v) t -> f:(key:'k -> data:'v -> 'v) -> unit
val choose_exn : ('k, 'v) t -> 'k * 'v