package base

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type
type key
type 'data t
val is_empty : _ t -> bool

Whether the dictionary is empty.

val length : _ t -> int

How many key/value pairs the dictionary contains.

val to_alist : 'data t -> (key * 'data) list

All key/value pairs.

val keys : _ t -> key list

All keys in the dictionary, in the same order as to_alist.

val data : 'data t -> 'data list

All values in the dictionary, in the same order as to_alist.

val to_sequence : 'data t -> (key * 'data) Sequence.t

Like to_alist. Produces a sequence.

val mem : _ t -> key -> bool

Whether key has a value.

val find : 'data t -> key -> 'data option

Produces the current value, or absence thereof, for a given key.

val find_exn : 'data t -> key -> 'data

Like find. Raises if there is no value for the given key.

val add : 'data t -> key:key -> data:'data -> [ `Ok of 'data t | `Duplicate ]

Adds a key/value pair for a key the dictionary does not contain, or reports a duplicate.

val add_exn : 'data t -> key:key -> data:'data -> 'data t

Like add. Raises on duplicates.

val set : 'data t -> key:key -> data:'data -> 'data t

Adds or replaces a key/value pair in the dictionary.

val remove : 'data t -> key -> 'data t

Removes any value for the given key.

val change : 'data t -> key -> f:('data option -> 'data option) -> 'data t

Adds, replaces, or removes the value for a given key, depending on its current value or lack thereof.

val update : 'data t -> key -> f:('data option -> 'data) -> 'data t

Adds or replaces the value for a given key, depending on its current value or lack thereof.

val add_multi : 'data list t -> key:key -> data:'data -> 'data list t

Adds data to the existing key/value pair for key. Interprets a missing key as having an empty list.

val remove_multi : 'data list t -> key -> 'data list t

Removes one element from the existing key/value pair for key. Removes the key entirely if the new list is empty.

val find_multi : 'data list t -> key -> 'data list

Produces the list associated with the corresponding key. Interprets a missing key as having an empty list.

val fold : 'data t -> init:'acc -> f:(key:key -> data:'data -> 'acc -> 'acc) -> 'acc

Combines every value in the dictionary.

val fold_until : 'data t -> init:'acc -> f: (key:key -> data:'data -> 'acc -> ('acc, 'final) Container.Continue_or_stop.t) -> finish:('acc -> 'final) -> 'final

Like fold. May stop before completing the iteration.

val for_all : 'data t -> f:('data -> bool) -> bool

Whether every value satisfies f.

val for_alli : 'data t -> f:(key:key -> data:'data -> bool) -> bool

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.

val existsi : 'data t -> f:(key:key -> data:'data -> bool) -> bool

Like exists. The predicate may also depend on the associated key.

val count : 'data t -> f:('data -> bool) -> int

How many values satisfy f.

val counti : 'data t -> f:(key:key -> data:'data -> bool) -> int

Like count. The predicate may also depend on the associated key.

val sum : (module Container.Summable with type t = 'a) -> 'data t -> f:('data -> 'a) -> 'a

Sum up f data for all data in the dictionary.

val sumi : (module Container.Summable with type t = 'a) -> 'data t -> f:(key:'key -> data:'data -> 'a) -> 'a

Like sum. The function may also depend on the associated key.

val min_elt : 'data t -> (key * 'data) option

Produces the key/value pair with the smallest key if non-empty.

val min_elt_exn : 'data t -> key * 'data

Like min_elt. Raises if empty.

val max_elt : 'data t -> (key * 'data) option

Produces the key/value pair with the largest key if non-empty.

val max_elt_exn : 'data t -> key * 'data

Like max_elt. Raises if empty.

val iter_keys : _ t -> f:(key -> unit) -> unit

Calls f for every key.

val iter : 'data t -> f:('data -> unit) -> unit

Calls f for every value.

val iteri : 'data t -> f:(key:key -> data:'data -> unit) -> unit

Calls f for every key/value pair.

val map : 'data1 t -> f:('data1 -> 'data2) -> 'data2 t

Transforms every value.

val mapi : 'data1 t -> f:(key:key -> data:'data1 -> 'data2) -> 'data2 t

Like map. The transformation may also depend on the associated key.

val filter_keys : 'data t -> f:(key -> bool) -> 'data t

Produces only those key/value pairs whose key satisfies f.

val filter : 'data t -> f:('data -> bool) -> 'data t

Produces only those key/value pairs whose value satisfies f.

val filteri : 'data t -> f:(key:key -> data:'data -> bool) -> 'data t

Produces only those key/value pairs which satisfy f.

val filter_map : 'data1 t -> f:('data1 -> 'data2 option) -> 'data2 t

Produces key/value pairs for which f produces Some.

val filter_mapi : 'data1 t -> f:(key:key -> data:'data1 -> 'data2 option) -> 'data2 t

Like filter_map. The new value may also depend on the associated key.

val partition_tf : 'data t -> f:('data -> bool) -> 'data t * 'data t

Splits one dictionary into two. The first contains key/value pairs for which the value satisfies f. The second contains the remainder.

val partitioni_tf : 'data t -> f:(key:key -> data:'data -> bool) -> 'data t * 'data t

Like partition_tf. The predicate may also depend on the associated key.

val partition_map : 'data1 t -> f:('data1 -> ('data2, 'data3) Either.t) -> 'data2 t * 'data3 t

Splits one dictionary into two, corresponding respectively to First _ and Second _ results from f.

val partition_mapi : 'data1 t -> f:(key:key -> data:'data1 -> ('data2, 'data3) Either.t) -> 'data2 t * 'data3 t

Like partition_map. The split may also depend on the associated key.

val combine_errors : 'data Or_error.t t -> 'data t Or_error.t

Produces an error combining all error messages from key/value pairs, or a dictionary of all Ok values if none are Error.

val unzip : ('data1 * 'data2) t -> 'data1 t * 'data2 t

Splits the fst and snd components of values associated with keys into separate dictionaries.

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_disjoint_exn and merge_skewed instead.

val merge_disjoint_exn : 'data t -> 'data t -> 'data t

Merges two dictionaries with the same type of data and disjoint sets of keys. Raises if any keys overlap.

val merge_skewed : 'data t -> 'data t -> combine:(key:key -> 'data -> 'data -> 'data) -> 'data t

Merges 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 : 'data t -> 'data t -> data_equal:('data -> 'data -> bool) -> (key * [ `Left of 'data | `Right of 'data | `Unequal of 'data * 'data ]) Sequence.t

Computes a sequence of differences between two dictionaries.

val fold_symmetric_diff : 'data t -> 'data t -> data_equal:('data -> 'data -> bool) -> init:'acc -> f: ('acc -> (key * [ `Left of 'data | `Right of 'data | `Unequal of 'data * 'data ]) -> 'acc) -> 'acc

Folds over the result of symmetric_diff. May be more performant.

OCaml

Innovation. Community. Security.