val add : 'a t -> key:key -> data:'a -> unit
val replace : 'a t -> key:key -> data:'a -> unit
val iter : f:(key:key -> data:'a -> unit) -> 'a t -> unit
val for_all : f:(key:key -> data:'a -> bool) -> 'a t -> bool
val map : f:(key:key -> data:'a -> 'b) -> 'a t -> 'b t
val map_inplace : f:(key:key -> data:'a -> 'a) -> 'a t -> unit
val filter : f:('a -> bool) -> 'a t -> 'a t
val filter_inplace : f:('a -> bool) -> 'a t -> unit
val filteri : f:(key:key -> data:'a -> bool) -> 'a t -> 'a t
val filteri_inplace : f:(key:key -> data:'a -> bool) -> 'a t -> unit
val filter_map : f:(key:key -> data:'a -> 'b option) -> 'a t -> 'b t
val filter_map_inplace : f:(key:key -> data:'a -> 'a option) -> 'a t -> unit
val fold : f:(key:key -> data:'a -> 'b -> 'b) -> 'a t -> init:'b -> 'b
val exists : f:(key:key -> data:'a -> bool) -> 'a t -> bool
val modify : key:key -> f:('a -> 'a) -> 'a t -> unit
val modify_def : default:'a -> key:key -> f:('a -> 'a) -> 'a t -> unit
val modify_opt : key:key -> f:('a option -> 'a option) -> 'a t -> unit
val merge :
f:(key -> 'a option -> 'b option -> 'c option) ->
left:'a t ->
right:'b t ->
'c t
val merge_all :
f:(key -> 'a list -> 'b list -> 'c list) ->
left:'a t ->
right:'b t ->
'c t