package base

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type
type 'key key

The type of keys. This will be 'key for polymorphic dictionaries, or some fixed type for dictionaries with monomorphic keys.

type ('key, 'data, 'phantom) t

Dictionaries. Their keys have type 'key key. Each key's associated value has type 'data. The dictionary may be distinguished by a 'phantom type.

type ('fn, 'key, 'data, 'phantom) accessor

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 -> bool

Whether the dictionary is empty.

val length : (_, _, _) t -> int

How many key/value pairs the dictionary contains.

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

All key/value pairs.

val keys : ('key, _, _) t -> 'key 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 : ('key, 'data, 'phantom) t -> ('key key * 'data) Sequence.t

Like to_alist. Produces a sequence.

val mem : (('key, _, 'phantom) t -> 'key key -> bool, 'key, 'data, 'phantom) accessor

Whether key has a value.

val find : (('key, 'data, 'phantom) t -> 'key key -> 'data option, 'key, 'data, 'phantom) accessor

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

val find_exn : (('key, 'data, 'phantom) t -> 'key key -> 'data, 'key, 'data, 'phantom) accessor

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) accessor

Adds 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) accessor

Like add. Raises on duplicates.

val set : (('key, 'data, 'phantom) t -> key:'key key -> data:'data -> ('key, 'data, 'phantom) t, 'key, 'data, 'phantom) accessor

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

val remove : (('key, 'data, 'phantom) t -> 'key key -> ('key, 'data, 'phantom) t, 'key, 'data, 'phantom) accessor

Removes 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) accessor

Adds, 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) accessor

Adds 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) accessor

Adds 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) accessor

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) accessor

Produces 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) -> 'acc

Combines 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) -> 'final

Like fold. May stop before completing the iteration.

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

Whether every value satisfies f.

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

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

val exists : ('key, 'data, _) t -> f:('data -> bool) -> bool

Whether at least one value satisfies f.

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

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

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

How many values satisfy f.

val counti : ('key, 'data, _) t -> f:(key:'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) -> ('key, '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) -> ('key, 'data, _) t -> f:(key:'key -> data:'data -> 'a) -> 'a

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

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

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

val min_elt_exn : ('key, 'data, _) t -> 'key key * 'data

Like min_elt. Raises if empty.

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

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

val max_elt_exn : ('key, 'data, _) t -> 'key key * 'data

Like max_elt. Raises if empty.

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

Calls f for every key.

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

Calls f for every value.

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

Calls f for every key/value pair.

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

Transforms every value.

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

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

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

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

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

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) t

Produces only those key/value pairs which satisfy f.

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

Produces 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) t

Like 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) 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 : ('key, 'data, 'phantom) t -> f:(key:'key key -> data:'data -> bool) -> ('key, 'data, 'phantom) t * ('key, 'data, 'phantom) t

Like 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) t

Splits 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) t

Like 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) accessor

Produces 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) t

Splits 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) accessor

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 : (('key, 'data, 'phantom) t -> ('key, 'data, 'phantom) t -> ('key, 'data, 'phantom) t, 'key, 'data, 'phantom) accessor

Merges 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) accessor

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 : (('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) accessor

Computes 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) accessor

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

OCaml

Innovation. Community. Security.