To focus the search input from anywhere on the page, press the 'S' key.

in-package search v0.1.0

Library

Module

Module type

Parameter

Class

Class type

String maps.

## String maps

`include Map.S with type key := string and type 'a t := 'a map`

`val empty : 'a map`

The empty map.

`val is_empty : 'a map -> bool`

Test whether a map is empty or not.

`val mem : string -> 'a map -> bool`

`mem x m`

returns `true`

if `m`

contains a binding for `x`

, and `false`

otherwise.

`add x y m`

returns a map containing the same bindings as `m`

, plus a binding of `x`

to `y`

. If `x`

was already bound in `m`

to a value that is physically equal to `y`

, `m`

is returned unchanged (the result of the function is then physically equal to `m`

). Otherwise, the previous binding of `x`

in `m`

disappears.

`val singleton : string -> 'a -> 'a map`

`singleton x y`

returns the one-element map that contains a binding `y`

for `x`

.

`remove x m`

returns a map containing the same bindings as `m`

, except for `x`

which is unbound in the returned map. If `x`

was not in `m`

, `m`

is returned unchanged (the result of the function is then physically equal to `m`

).

`merge f m1 m2`

computes a map whose keys is a subset of keys of `m1`

and of `m2`

. The presence of each such binding, and the corresponding value, is determined with the function `f`

.

`union f m1 m2`

computes a map whose keys is the union of keys of `m1`

and of `m2`

. When the same binding is defined in both arguments, the function `f`

is used to combine them.

Total ordering between maps. The first argument is a total ordering used to compare data associated with equal keys in the two maps.

`equal cmp m1 m2`

tests whether the maps `m1`

and `m2`

are equal, that is, contain equal keys and associate them with equal data. `cmp`

is the equality predicate used to compare the data associated with the keys.

`val iter : (string -> 'a -> unit) -> 'a map -> unit`

`iter f m`

applies `f`

to all bindings in map `m`

. `f`

receives the key as first argument, and the associated value as second argument. The bindings are passed to `f`

in increasing order with respect to the ordering over the type of the keys.

`val fold : (string -> 'a -> 'b -> 'b) -> 'a map -> 'b -> 'b`

`fold f m a`

computes `(f kN dN ... (f k1 d1 a)...)`

, where `k1 ... kN`

are the keys of all bindings in `m`

(in increasing order), and `d1 ... dN`

are the associated data.

`val for_all : (string -> 'a -> bool) -> 'a map -> bool`

`for_all p m`

checks if all the bindings of the map satisfy the predicate `p`

.

`val exists : (string -> 'a -> bool) -> 'a map -> bool`

`exists p m`

checks if at least one binding of the map satisfies the predicate `p`

.

`filter p m`

returns the map with all the bindings in `m`

that satisfy predicate `p`

. If `p`

satisfies every binding in `m`

, `m`

is returned unchanged (the result of the function is then physically equal to `m`

)

`partition p m`

returns a pair of maps `(m1, m2)`

, where `m1`

contains all the bindings of `s`

that satisfy the predicate `p`

, and `m2`

is the map with all the bindings of `s`

that do not satisfy `p`

.

`val cardinal : 'a map -> int`

Return the number of bindings of a map.

`val bindings : 'a map -> (string * 'a) list`

Return the list of all bindings of the given map. The returned list is sorted in increasing order with respect to the ordering `Ord.compare`

, where `Ord`

is the argument given to `Map`

.Make.

`split x m`

returns a triple `(l, data, r)`

, where `l`

is the map with all the bindings of `m`

whose key is strictly less than `x`

; `r`

is the map with all the bindings of `m`

whose key is strictly greater than `x`

; `data`

is `None`

if `m`

contains no binding for `x`

, or `Some v`

if `m`

binds `v`

to `x`

.

`map f m`

returns a map with same domain as `m`

, where the associated value `a`

of all bindings of `m`

has been replaced by the result of the application of `f`

to `a`

. The bindings are passed to `f`

in increasing order with respect to the ordering over the type of the keys.

`type 'a t = 'a map`

`val min_binding : 'a map -> (string * 'a) option`

Exception safe `Map`

.S.min_binding.

`val get_min_binding : 'a map -> string * 'a`

`get_min_binding`

is like `min_binding`

but

`val max_binding : 'a map -> (string * 'a) option`

Exception safe `Map`

.S.max_binding.

`val get_max_binding : 'a map -> string * 'a`

`get_max_binding`

is like `max_binding`

but

`val choose : 'a map -> (string * 'a) option`

Exception safe `Map`

.S.choose.

`val find : string -> 'a map -> 'a option`

Exception safe `Map`

.S.find.

`val get : string -> 'a map -> 'a`

`get k m`

is like `Map`

.S.find but raises `Invalid_argument`

if `k`

is not bound in `m`

.

`val of_list : (string * 'a) list -> 'a map`

`of_list bs`

is ```
List.fold_left (fun m (k, v) -> add k v m) empty
bs
```

.

```
val pp :
?sep:(Format.formatter -> unit -> unit) ->
(Format.formatter -> (string * 'a) -> unit) ->
Format.formatter ->
'a map ->
unit
```

`pp ~sep pp_binding ppf m`

formats the bindings of `m`

on `ppf`

. Each binding is formatted with `pp_binding`

and bindings are separated by `sep`

(defaults to `Format.pp_print_cut`

). If the map is empty leaves `ppf`

untouched.

```
val dump :
(Format.formatter -> 'a -> unit) ->
Format.formatter ->
'a map ->
unit
```

`dump pp_v ppf m`

prints an unspecified representation of `m`

on `ppf`

using `pp_v`

to print the map codomain elements.

`val dump_string_map : Format.formatter -> string map -> unit`

`dump_string_map ppf m`

prints an unspecified representation of the string map `m`

on `ppf`

.