module type Accessors =sig..end
type ('a, 'b) t
type 'a key
val sexp_of_key : ('a, 'b) t ->
'a key -> Sexplib.Sexp.tval clear : ('a, 'b) t -> unitval copy : ('a, 'b) t ->
('a, 'b) tval invariant : ('a, 'b) t -> unitval fold : ('a, 'b) t ->
init:'c ->
f:(key:'a key -> data:'b -> 'c -> 'c) -> 'cval iter : ('a, 'b) t ->
f:(key:'a key -> data:'b -> unit) -> unitval existsi : ('a, 'b) t ->
f:(key:'a key -> data:'b -> bool) -> boolval exists : ('a, 'b) t -> f:('b -> bool) -> boolval length : ('a, 'b) t -> intval is_empty : ('a, 'b) t -> boolval mem : ('a, 'b) t ->
'a key -> boolval remove : ('a, 'b) t ->
'a key -> unitval remove_one : ('a, 'b list) t ->
'a key -> unitval replace : ('a, 'b) t ->
key:'a key -> data:'b -> unitval set : ('a, 'b) t ->
key:'a key -> data:'b -> unitval add : ('a, 'b) t ->
key:'a key -> data:'b -> [ `Duplicate | `Ok ]val add_exn : ('a, 'b) t ->
key:'a key -> data:'b -> unitval change : ('a, 'b) t ->
'a key -> ('b option -> 'b option) -> unitchange t key f updates the given table by changing the value stored under key
according to f, just like Map.change (see that for example).val add_multi : ('a, 'b list) t ->
key:'a key -> data:'b -> unitadd_multi t ~key ~data if key is present in the table then cons
data on the list, otherwise add key with a single element list.val remove_multi : ('a, 'b list) t ->
'a key -> unitremove_multi t key updates the table, removing the head of the list bound to
key. If the list has only one element (or is empty) then the binding is
removed.val map : ('a, 'b) t ->
f:('b -> 'c) -> ('a, 'c) tmap t f returns new table with bound values replaced by
f applied to the bound valuesval mapi : ('a, 'b) t ->
f:(key:'a key -> data:'b -> 'c) ->
('a, 'c) tmap, but function takes both key and data as argumentsval filter_map : ('a, 'b) t ->
f:('b -> 'c option) -> ('a, 'c) tval filter_mapi : ('a, 'b) t ->
f:(key:'a key -> data:'b -> 'c option) ->
('a, 'c) tfilter_map, but function takes both key and data as argumentsval filter : ('a, 'b) t ->
f:('b -> bool) -> ('a, 'b) tval filteri : ('a, 'b) t ->
f:(key:'a key -> data:'b -> bool) ->
('a, 'b) tval partition_map : ('a, 'b) t ->
f:('b -> [ `Fst of 'c | `Snd of 'd ]) ->
('a, 'c) t *
('a, 'd) tval partition_mapi : ('a, 'b) t ->
f:(key:'a key ->
data:'b -> [ `Fst of 'c | `Snd of 'd ]) ->
('a, 'c) t *
('a, 'd) tpartition_map, but function takes both key and data as argumentsval partition_tf : ('a, 'b) t ->
f:('b -> bool) ->
('a, 'b) t *
('a, 'b) tval partitioni_tf : ('a, 'b) t ->
f:(key:'a key -> data:'b -> bool) ->
('a, 'b) t *
('a, 'b) tval find_or_add : ('a, 'b) t ->
'a key -> default:(unit -> 'b) -> 'bfind_or_add t k ~default returns the data associated with key k if it
is in the table t, otherwise it lets d = default() and adds it to the
table.val find : ('a, 'b) t ->
'a key -> 'b optionfind t k returns Some (the current binding) of k in t, or None if no
such binding existsval find_exn : ('a, 'b) t ->
'a key -> 'bfind_exn t k returns the current binding of k in t, or raises Not_found
if no such binding exists.val find_and_remove : ('a, 'b) t ->
'a key -> 'b optionfind_and_remove t k returns Some (the current binding) of k in t and removes
it, or None is no such binding existsval iter_vals : ('a, 'b) t -> f:('b -> unit) -> unititer_vals t ~f is like iter, except it only supplies the value to f,
not the key.val merge : ('k, 'a) t ->
('k, 'b) t ->
f:(key:'k key ->
[ `Both of 'a * 'b | `Left of 'a | `Right of 'b ] -> 'c option) ->
('k, 'c) t
The result of merge f h1 h2 has as keys the set of all k in the
union of the sets of keys of h1 and h2 for which d(k) is not
None, where:
d(k) =
k in h1 is to d1, and h2 does not map k;k in h2 is to d2, and h1 does not map k;k in h1 is to d1 and k in h2 is to d2.k is mapped to a single piece of data x, where d(k) = Some x.val merge_into : f:(key:'a key -> 'b -> 'b option -> 'b option) ->
src:('a, 'b) t ->
dst:('a, 'b) t -> unit
After merge_into f src dst, for every key in src, key will be
re-mapped in dst to v if f ~key d1 (find dst key) = Some v.
val keys : ('a, 'b) t ->
'a key list
Returns the list of all data for given hashtable.
val data : ('a, 'b) t -> 'b listfilter_inplace t ~f removes all the elements from t that don't satisfy f.val filter_inplace : ('a, 'b) t -> f:('b -> bool) -> unitval filteri_inplace : ('a, 'b) t ->
f:('a key -> 'b -> bool) -> unitval equal : ('a, 'b) t ->
('a, 'b) t -> ('b -> 'b -> bool) -> boolval to_alist : ('a, 'b) t ->
('a key * 'b) listval incr : ?by:int ->
('a, int) t ->
'a key -> unit