Dictionary_immutable.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 : (_, _, _) 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.