Dictionary_mutable.S1
val is_empty : _ t -> bool
Whether the dictionary is empty.
val length : _ t -> int
How many key/value pairs the dictionary contains.
val data : 'data t -> 'data list
All values in the dictionary, in the same order as to_alist
.
val clear : _ t -> unit
Removes all key/value pairs from the dictionary.
Produces the current value, or absence thereof, for a given key.
Like find
. Adds the value default ()
if none exists, then returns it.
Like find
. Adds default key
if no value exists.
Like find
. Calls if_found data
if a value exists, or if_not_found key
otherwise. Avoids allocation Some
.
val findi_and_call :
'data t ->
key ->
if_found:(key:key -> data:'data -> 'c) ->
if_not_found:(key -> 'c) ->
'c
Like findi
. Calls if_found ~key ~data
if a value exists.
Like find
. Removes the value for key
, if any, from the dictionary before returning it.
Adds a key/value pair for a key the dictionary does not contain, or reports a duplicate.
Adds or replaces a key/value pair in the dictionary.
Adds, replaces, or removes the value for a given key, depending on its current value or lack thereof.
Adds or replaces the value for a given key, depending on its current value or lack thereof.
Like update
. Returns the new value.
Adds 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
.
Subtracts 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
.
Adds 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.
Produces the list associated with the corresponding key. Interprets a missing key as having an empty list.
Combines every value in the dictionary.
val for_all : 'data t -> f:('data -> bool) -> bool
Whether every value satisfies f
.
Like for_all
. The predicate may also depend on the associated key.
val exists : 'data t -> f:('data -> bool) -> bool
Whether at least one value satisfies f
.
Like exists
. The predicate may also depend on the associated key.
val count : 'data t -> f:('data -> bool) -> int
How many values satisfy f
.
Like count
. The predicate may also depend on the associated key.
val choose_randomly :
?random_state:Random.State.t ->
'data t ->
(key * 'data) option
Arbitrary, pseudo-random key/value pair if non-empty.
val choose_randomly_exn :
?random_state:Random.State.t ->
'data t ->
key * 'data
Like choose_randomly
. Raises if empty.
val iter : 'data t -> f:('data -> unit) -> unit
Calls f
for every value.
Like map
. The transformation may also depend on the associated key.
val map_inplace : 'data t -> f:('data -> 'data) -> unit
Like 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
.
Produces only those key/value pairs which satisfy f
.
val filter_inplace : 'data t -> f:('data -> bool) -> unit
Like filter
. Modifies the input.
Like filteri
. Modifies the input.
Produces key/value pairs for which f
produces Some
.
Like filter_map
. The new value may also depend on the associated key.
val filter_map_inplace : 'data t -> f:('data -> 'data option) -> unit
Like filter_map
. Modifies the input.
Like filter_mapi
. Modifies the input.
Splits one dictionary into two. The first contains key/value pairs for which the value satisfies f
. The second contains the remainder.
Like partition_tf
. The predicate may also depend on the associated key.
Splits one dictionary into two, corresponding respectively to First _
and Second _
results from f
.
Like partition_map
. The split may also depend on the associated key.
val merge :
'data1 t ->
'data2 t ->
f:
(key:key ->
[ `Left of 'data1 | `Right of 'data2 | `Both of 'data1 * 'data2 ] ->
'data3 option) ->
'data3 t
Merges two dictionaries by fully traversing both. Not suitable for efficiently merging lists of dictionaries. See merge_into
instead.
val merge_into :
src:'data1 t ->
dst:'data2 t ->
f:(key:key -> 'data1 -> 'data2 option -> 'data2 Merge_into_action.t) ->
unit
Merges two dictionaries by traversing src
and adding to dst
. Computes the effect on dst
of each key/value pair in src
using f
.
val create : unit -> 'data t
Creates a new empty dictionary.
Dictionary containing the given key/value pairs. Fails if there are duplicate keys.
val of_alist_report_all_dups :
(key * 'data) list ->
[ `Ok of 'data t | `Duplicate_keys of key list ]
Like of_alist
. On failure, provides all duplicate keys instead of a single representative.
val of_alist_or_error : (key * 'data) list -> 'data t Or_error.t
Like of_alist
. Returns a Result.t
.
Produces a dictionary mapping each key to a list of associated values.
val create_mapped :
get_key:('a -> key) ->
get_data:('a -> 'data) ->
'a list ->
[ `Ok of 'data t | `Duplicate_keys of key list ]
Like of_alist
. Consume a list of elements for which key/value pairs can be computed.
val create_with_key :
get_key:('data -> key) ->
'data list ->
[ `Ok of 'data t | `Duplicate_keys of key list ]
Like of_alist
. Consume values for which keys can be computed.
val create_with_key_or_error :
get_key:('data -> key) ->
'data list ->
'data t Or_error.t
Like of_alist_or_error
. Consume values for which keys can be computed.
Like of_alist_exn
. Consume values for which keys can be computed.