Dictionary_mutable.AccessorsThe type of keys. This will be 'key for polymorphic dictionaries, or some fixed type for dictionaries with monomorphic keys.
Dictionaries. Their keys have type 'key key. Each key's associated value has type 'data. The dictionary may be distinguished by a 'phantom type.
The type of accessor functions 'fn that operate on ('key, 'data, 'phantom) t. May take extra arguments before 'fn, such as a comparison function.
val is_empty : (_, _, 'phantom) t -> boolWhether the dictionary is empty.
val length : (_, _, 'phantom) t -> intHow many key/value pairs the dictionary contains.
All keys in the dictionary, in the same order as to_alist.
val data : (_, 'data, 'phantom) t -> 'data listAll values in the dictionary, in the same order as to_alist.
val clear : (_, _, 'phantom) t -> unitRemoves all key/value pairs from the dictionary.
A new dictionary containing the same key/value pairs.
Whether key has a value.
Produces the current value, or absence thereof, for a given key.
Like find. Raises if there is no value for the given key.
val find_or_add :
(('key, 'data, 'phantom) t ->
'key key ->
default:(unit -> 'data) ->
'data,
'key,
'data,
'phantom)
accessorLike find. Adds the value default () if none exists, then returns it.
val findi_or_add :
(('key, 'data, 'phantom) t ->
'key key ->
default:('key key -> 'data) ->
'data,
'key,
'data,
'phantom)
accessorLike find. Adds default key if no value exists.
val find_and_call :
(('key, 'data, 'phantom) t ->
'key key ->
if_found:('data -> 'c) ->
if_not_found:('key key -> 'c) ->
'c,
'key,
'data,
'phantom)
accessorLike find. Calls if_found data if a value exists, or if_not_found key otherwise. Avoids allocation Some.
val findi_and_call :
(('key, 'data, 'phantom) t ->
'key key ->
if_found:(key:'key key -> data:'data -> 'c) ->
if_not_found:('key key -> 'c) ->
'c,
'key,
'data,
'phantom)
accessorLike findi. Calls if_found ~key ~data if a value exists.
val find_and_remove :
(('key, 'data, 'phantom) t ->
'key key ->
'data option,
'key,
'data,
'phantom)
accessorLike find. Removes the value for key, if any, from the dictionary before returning it.
val add :
(('key, 'data, 'phantom) t ->
key:'key key ->
data:'data ->
[ `Ok | `Duplicate ],
'key,
'data,
'phantom)
accessorAdds a key/value pair for a key the dictionary does not contain, or reports a duplicate.
val add_exn :
(('key, 'data, 'phantom) t ->
key:'key key ->
data:'data ->
unit,
'key,
'data,
'phantom)
accessorLike add. Raises on duplicates.
val set :
(('key, 'data, 'phantom) t ->
key:'key key ->
data:'data ->
unit,
'key,
'data,
'phantom)
accessorAdds or replaces a key/value pair in the dictionary.
Removes any value for the given key.
val change :
(('key, 'data, 'phantom) t ->
'key key ->
f:('data option -> 'data option) ->
unit,
'key,
'data,
'phantom)
accessorAdds, replaces, or removes the value for a given key, depending on its current value or lack thereof.
val update :
(('key, 'data, 'phantom) t ->
'key key ->
f:('data option -> 'data) ->
unit,
'key,
'data,
'phantom)
accessorAdds or replaces the value for a given key, depending on its current value or lack thereof.
Like update. Returns the new value.
val incr :
(?by:int ->
?remove_if_zero:bool ->
('key, int, 'phantom) t ->
'key key ->
unit,
'key,
'data,
'phantom)
accessorAdds by to the value for key, default 0 if key is absent. May remove key if the result is 0, depending on remove_if_zero.
val decr :
(?by:int ->
?remove_if_zero:bool ->
('key, int, 'phantom) t ->
'key key ->
unit,
'key,
'data,
'phantom)
accessorSubtracts by from the value for key, default 0 if key is absent. May remove key if the result is 0, depending on remove_if_zero.
val add_multi :
(('key, 'data list, 'phantom) t ->
key:'key key ->
data:'data ->
unit,
'key,
'data,
'phantom)
accessorAdds data to the existing key/value pair for key. Interprets a missing key as having an empty list.
Removes one element from the existing key/value pair for key. Removes the key entirely if the new list is empty.
val find_multi :
(('key, 'data list, 'phantom) t ->
'key key ->
'data list,
'key,
'data,
'phantom)
accessorProduces the list associated with the corresponding key. Interprets a missing key as having an empty list.
val fold :
('key, 'data, 'phantom) t ->
init:'acc ->
f:(key:'key key -> data:'data -> 'acc -> 'acc) ->
'accCombines every value in the dictionary.
val for_all : (_, 'data, 'phantom) t -> f:('data -> bool) -> boolWhether every value satisfies f.
Like for_all. The predicate may also depend on the associated key.
val exists : (_, 'data, 'phantom) t -> f:('data -> bool) -> boolWhether at least one value satisfies f.
Like exists. The predicate may also depend on the associated key.
val count : (_, 'data, 'phantom) t -> f:('data -> bool) -> intHow many values satisfy f.
Like count. The predicate may also depend on the associated key.
Arbitrary, deterministic key/value pair if non-empty.
val choose_randomly :
?random_state:Random.State.t ->
('key, 'data, 'phantom) t ->
('key key * 'data) optionArbitrary, pseudo-random key/value pair if non-empty.
val choose_randomly_exn :
?random_state:Random.State.t ->
('key, 'data, 'phantom) t ->
'key key * 'dataLike choose_randomly. Raises if empty.
val iter : (_, 'data, 'phantom) t -> f:('data -> unit) -> unitCalls f for every value.
Calls f for every key/value pair.
Transforms every value.
val mapi :
('key, 'data, 'phantom) t ->
f:(key:'key key -> data:'data -> 'c) ->
('key, 'c, 'phantom) tLike map. The transformation may also depend on the associated key.
val map_inplace : (_, 'data, 'phantom) t -> f:('data -> 'data) -> unitLike map. Modifies the input.
Like mapi. Modifies the input.
Produces only those key/value pairs whose key satisfies f.
Produces only those key/value pairs whose value satisfies f.
val filteri :
('key, 'data, 'phantom) t ->
f:(key:'key key -> data:'data -> bool) ->
('key, 'data, 'phantom) tProduces only those key/value pairs which satisfy f.
Like filter_keys. Modifies the input.
val filter_inplace : (_, 'data, 'phantom) t -> f:('data -> bool) -> unitLike filter. Modifies the input.
Like filteri. Modifies the input.
Produces key/value pairs for which f produces Some.
val filter_mapi :
('key, 'data, 'phantom) t ->
f:(key:'key key -> data:'data -> 'c option) ->
('key, 'c, 'phantom) tLike filter_map. The new value may also depend on the associated key.
val filter_map_inplace :
(_, 'data, 'phantom) t ->
f:('data -> 'data option) ->
unitLike filter_map. Modifies the input.
val filter_mapi_inplace :
('key, 'data, 'phantom) t ->
f:(key:'key key -> data:'data -> 'data option) ->
unitLike filter_mapi. Modifies the input.
val partition_tf :
('key, 'data, 'phantom) t ->
f:('data -> bool) ->
('key, 'data, 'phantom) t * ('key, 'data, 'phantom) tSplits one dictionary into two. The first contains key/value pairs for which the value satisfies f. The second contains the remainder.
val partitioni_tf :
('key, 'data, 'phantom) t ->
f:(key:'key key -> data:'data -> bool) ->
('key, 'data, 'phantom) t * ('key, 'data, 'phantom) tLike partition_tf. The predicate may also depend on the associated key.
val partition_map :
('key, 'data, 'phantom) t ->
f:('data -> ('c, 'd) Either.t) ->
('key, 'c, 'phantom) t * ('key, 'd, 'phantom) tSplits one dictionary into two, corresponding respectively to First _ and Second _ results from f.
val partition_mapi :
('key, 'data, 'phantom) t ->
f:(key:'key key -> data:'data -> ('c, 'd) Either.t) ->
('key, 'c, 'phantom) t * ('key, 'd, 'phantom) tLike partition_map. The split may also depend on the associated key.
val merge :
(('key, 'data1, 'phantom) t ->
('key, 'data2, 'phantom) t ->
f:
(key:'key key ->
[ `Left of 'data1 | `Right of 'data2 | `Both of 'data1 * 'data2 ] ->
'data3 option) ->
('key, 'data3, 'phantom) t,
'key,
'data3,
'phantom)
accessorMerges two dictionaries by fully traversing both. Not suitable for efficiently merging lists of dictionaries. See merge_into instead.
val merge_into :
(src:('key, 'data1, 'phantom) t ->
dst:('key, 'data2, 'phantom) t ->
f:(key:'key key -> 'data1 -> 'data2 option -> 'data2 Merge_into_action.t) ->
unit,
'key,
'data,
'phantom)
accessorMerges two dictionaries by traversing src and adding to dst. Computes the effect on dst of each key/value pair in src using f.