Dictionary_immutable.Sval is_empty : (_, _, _) t -> boolWhether the dictionary is empty.
val length : (_, _, _) t -> intHow many key/value pairs the dictionary contains.
All keys in the dictionary, in the same order as to_alist.
val data : (_, 'data, _) t -> 'data listAll values in the dictionary, in the same order as to_alist.
val to_sequence : ('key, 'data, 'phantom) t -> ('key key * 'data) Sequence.tLike to_alist. Produces a sequence.
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 add :
(('key, 'data, 'phantom) t ->
key:'key key ->
data:'data ->
[ `Ok of ('key, 'data, 'phantom) t | `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 ->
('key, 'data, 'phantom) t,
'key,
'data,
'phantom)
accessorLike add. Raises on duplicates.
val set :
(('key, 'data, 'phantom) t ->
key:'key key ->
data:'data ->
('key, 'data, 'phantom) t,
'key,
'data,
'phantom)
accessorAdds or replaces a key/value pair in the dictionary.
val remove :
(('key, 'data, 'phantom) t ->
'key key ->
('key, 'data, 'phantom) t,
'key,
'data,
'phantom)
accessorRemoves any value for the given key.
val change :
(('key, 'data, 'phantom) t ->
'key key ->
f:('data option -> 'data option) ->
('key, 'data, 'phantom) t,
'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) ->
('key, 'data, 'phantom) t,
'key,
'data,
'phantom)
accessorAdds or replaces the value for a given key, depending on its current value or lack thereof.
val add_multi :
(('key, 'data list, 'phantom) t ->
key:'key key ->
data:'data ->
('key, 'data list, 'phantom) t,
'key,
'data,
'phantom)
accessorAdds data to the existing key/value pair for key. Interprets a missing key as having an empty list.
val remove_multi :
(('key, 'data list, 'phantom) t ->
'key key ->
('key, 'data list, 'phantom) t,
'key,
'data,
'phantom)
accessorRemoves 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, _) t ->
init:'acc ->
f:(key:'key key -> data:'data -> 'acc -> 'acc) ->
'accCombines every value in the dictionary.
val fold_until :
('key, 'data, _) t ->
init:'acc ->
f:
(key:'key key ->
data:'data ->
'acc ->
('acc, 'final) Container.Continue_or_stop.t) ->
finish:('acc -> 'final) ->
'finalLike fold. May stop before completing the iteration.
val for_all : ('key, 'data, _) t -> f:('data -> bool) -> boolWhether every value satisfies f.
Like for_all. The predicate may also depend on the associated key.
val exists : ('key, 'data, _) t -> f:('data -> bool) -> boolWhether at least one value satisfies f.
Like exists. The predicate may also depend on the associated key.
val count : ('key, 'data, _) t -> f:('data -> bool) -> intHow many values satisfy f.
Like count. The predicate may also depend on the associated key.
val sum :
(module Container.Summable with type t = 'a) ->
('key, 'data, _) t ->
f:('data -> 'a) ->
'aSum up f data for all data in the dictionary.
val sumi :
(module Container.Summable with type t = 'a) ->
('key, 'data, _) t ->
f:(key:'key -> data:'data -> 'a) ->
'aLike sum. The function may also depend on the associated key.
Produces the key/value pair with the smallest key if non-empty.
Produces the key/value pair with the largest key if non-empty.
val iter : (_, 'data, _) t -> f:('data -> unit) -> unitCalls f for every value.
Calls f for every key/value pair.
Transforms every value.
val mapi :
('key, 'data1, 'phantom) t ->
f:(key:'key key -> data:'data1 -> 'data2) ->
('key, 'data2, 'phantom) tLike map. The transformation may also depend on the associated key.
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.
val filter_map :
('key, 'data1, 'phantom) t ->
f:('data1 -> 'data2 option) ->
('key, 'data2, 'phantom) tProduces key/value pairs for which f produces Some.
val filter_mapi :
('key, 'data1, 'phantom) t ->
f:(key:'key key -> data:'data1 -> 'data2 option) ->
('key, 'data2, 'phantom) tLike filter_map. The new value may also depend on the associated key.
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, 'data1, 'phantom) t ->
f:('data1 -> ('data2, 'data3) Either.t) ->
('key, 'data2, 'phantom) t * ('key, 'data3, 'phantom) tSplits one dictionary into two, corresponding respectively to First _ and Second _ results from f.
val partition_mapi :
('key, 'data1, 'phantom) t ->
f:(key:'key key -> data:'data1 -> ('data2, 'data3) Either.t) ->
('key, 'data2, 'phantom) t * ('key, 'data3, 'phantom) tLike partition_map. The split may also depend on the associated key.
val combine_errors :
(('key, 'data Or_error.t, 'phantom) t ->
('key, 'data, 'phantom) t Or_error.t,
'key,
'data,
'phantom)
accessorProduces an error combining all error messages from key/value pairs, or a dictionary of all Ok values if none are Error.
val unzip :
('key, 'data1 * 'data2, 'phantom) t ->
('key, 'data1, 'phantom) t * ('key, 'data2, 'phantom) tSplits the fst and snd components of values associated with keys into separate dictionaries.
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,
'data,
'phantom)
accessorMerges two dictionaries by fully traversing both. Not suitable for efficiently merging lists of dictionaries. See merge_disjoint_exn and merge_skewed instead.
val merge_disjoint_exn :
(('key, 'data, 'phantom) t ->
('key, 'data, 'phantom) t ->
('key, 'data, 'phantom) t,
'key,
'data,
'phantom)
accessorMerges two dictionaries with the same type of data and disjoint sets of keys. Raises if any keys overlap.
val merge_skewed :
(('key, 'data, 'phantom) t ->
('key, 'data, 'phantom) t ->
combine:(key:'key key -> 'data -> 'data -> 'data) ->
('key, 'data, 'phantom) t,
'key,
'data,
'phantom)
accessorMerges two dictionaries by traversing only the smaller of the two. Adds key/value pairs missing from the larger dictionary, and combines duplicate values.
val symmetric_diff :
(('key, 'data, 'phantom) t ->
('key, 'data, 'phantom) t ->
data_equal:('data -> 'data -> bool) ->
('key key
* [ `Left of 'data | `Right of 'data | `Unequal of 'data * 'data ])
Sequence.t,
'key,
'data,
'phantom)
accessorComputes a sequence of differences between two dictionaries.
val fold_symmetric_diff :
(('key, 'data, 'phantom) t ->
('key, 'data, 'phantom) t ->
data_equal:('data -> 'data -> bool) ->
init:'acc ->
f:
('acc ->
('key key
* [ `Left of 'data | `Right of 'data | `Unequal of 'data * 'data ]) ->
'acc) ->
'acc,
'key,
'data,
'phantom)
accessorFolds over the result of symmetric_diff. May be more performant.
Dictionary with a single key/value pair.
val of_alist :
(('key key * 'data) list ->
[ `Ok of ('key, 'data, 'phantom) t | `Duplicate_key of 'key key ],
'key,
'data,
'phantom)
creatorDictionary containing the given key/value pairs. Fails if there are duplicate keys.
val of_alist_or_error :
(('key key * 'data) list ->
('key, 'data, 'phantom) t Or_error.t,
'key,
'data,
'phantom)
creatorLike of_alist. Returns a Result.t.
val of_alist_exn :
(('key key * 'data) list -> ('key, 'data, 'phantom) t, 'key, 'data, 'phantom)
creatorLike of_alist. Raises on duplicates.
val of_alist_multi :
(('key key * 'data) list ->
('key, 'data list, 'phantom) t,
'key,
'data,
'phantom)
creatorProduces a dictionary mapping each key to a list of associated values.
val of_alist_fold :
(('key key * 'data) list ->
init:'acc ->
f:('acc -> 'data -> 'acc) ->
('key, 'acc, 'phantom) t,
'key,
'data,
'phantom)
creatorProduces a dictionary using each key/value pair. Combines all values for a given key with init using f.
val of_alist_reduce :
(('key key * 'data) list ->
f:('data -> 'data -> 'data) ->
('key, 'data, 'phantom) t,
'key,
'data,
'phantom)
creatorProduces a dictionary using each key/value pair. Combines multiple values for a given key using f.
val of_sequence :
(('key key * 'data) Sequence.t ->
[ `Ok of ('key, 'data, 'phantom) t | `Duplicate_key of 'key key ],
'key,
'data,
'phantom)
creatorLike of_alist. Consumes a sequence.
val of_sequence_or_error :
(('key key * 'data) Sequence.t ->
('key, 'data, 'phantom) t Or_error.t,
'key,
'data,
'phantom)
creatorLike of_alist_or_error. Consumes a sequence.
val of_sequence_exn :
(('key key * 'data) Sequence.t ->
('key, 'data, 'phantom) t,
'key,
'data,
'phantom)
creatorLike of_alist_exn. Consumes a sequence.
val of_sequence_multi :
(('key key * 'data) Sequence.t ->
('key, 'data list, 'phantom) t,
'key,
'data,
'phantom)
creatorLike of_alist_multi. Consumes a sequence.
val of_sequence_fold :
(('key key * 'data) Sequence.t ->
init:'c ->
f:('c -> 'data -> 'c) ->
('key, 'c, 'phantom) t,
'key,
'data,
'phantom)
creatorLike of_alist_fold. Consumes a sequence.
val of_sequence_reduce :
(('key key * 'data) Sequence.t ->
f:('data -> 'data -> 'data) ->
('key, 'data, 'phantom) t,
'key,
'data,
'phantom)
creatorLike of_alist_reduce. Consumes a sequence.
val of_list_with_key :
('data list ->
get_key:('data -> 'key key) ->
[ `Ok of ('key, 'data, 'phantom) t | `Duplicate_key of 'key key ],
'key,
'data,
'phantom)
creatorLike of_alist. Consume values for which keys can be computed.
val of_list_with_key_or_error :
('data list ->
get_key:('data -> 'key key) ->
('key, 'data, 'phantom) t Or_error.t,
'key,
'data,
'phantom)
creatorLike of_alist_or_error. Consume values for which keys can be computed.
val of_list_with_key_exn :
('data list ->
get_key:('data -> 'key key) ->
('key, 'data, 'phantom) t,
'key,
'data,
'phantom)
creatorLike of_alist_exn. Consume values for which keys can be computed.
val of_list_with_key_multi :
('data list ->
get_key:('data -> 'key key) ->
('key, 'data list, 'phantom) t,
'key,
'data,
'phantom)
creatorLike of_alist_multi. Consume values for which keys can be computed.