package gmap

  1. Overview
  2. Docs

Output signature of the functor Make

Key

type 'a key

The type for map keys whose lookup value is 'a.

Map

type t

The type of maps from type 'a key to 'a.

Constructors

val empty : t

empty is the empty map.

val singleton : 'a key -> 'a -> t

singleton key value creates a one-element map that contains a binding value for key.

Basic operations

val is_empty : t -> bool

is_empty m returns true if the map m is empty, false otherwise.

val cardinal : t -> int

cardinal m returns the number of bindings of the map m.

Lookup operations

val mem : 'a key -> t -> bool

mem key m returns true if the map m contains a binding for key.

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

find key m returns Some v if the binding of key in m is v, or None if key is not bound m.

val get : 'a key -> t -> 'a

find key m returns v if the binding of key in m is v.

  • raises Not_found

    if m does not contain a binding for key.

Insertion and removal operations

val add_unless_bound : 'a key -> 'a -> t -> t option

add_unless_bound key value m returns Some m', a map containing the same bindings as m, plus a binding of key to value. Or, None if key was already bound in m.

val add : 'a key -> 'a -> t -> t

add key value m returns a map containing the same bindings as m, plus a binding of key to value. If key was already bound in m, the previous binding disappears.

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

remove key m returns a map containing the same bindings as m, except for key which is not bound in the returned map. If key was not bound in m, m is returned unchanged.

val update : 'a key -> ('a option -> 'a option) -> t -> t

update k f m returns a map containing the same bindings as m, except for the binding v of k. Depending the value of v, which is f (find k m), the binding of k is added, removed, or updated.

Bindings

type b =
  1. | B : 'a key * 'a -> b
    (*

    The type for a binding: a pair containing a key and its value.

    *)

Selection

val min_binding : t -> b option

min_binding m is the minimal binding in m, None if m is empty.

val max_binding : t -> b option

max_binding m is the maximal binding in m, None if m is empty.

val any_binding : t -> b option

any_binding m is any binding in m, None if m is empty.

val bindings : t -> b list

bindings m returns the list of all bindings in the given map m. The list is sorted with respect to the ordering over the type of the keys.

Lookup

val findb : 'a key -> t -> b option

findb key m returns Some b if the binding of key in m is b, or None if key is not bound in t.

val getb : 'a key -> t -> b

getb key m returns v if the binding of key in m is b.

  • raises Not_found

    if m does not contain a binding for key.

Insertion

val addb_unless_bound : b -> t -> t option

addb_unless_bound b m returns Some m', a map containing the same bindings as m, plus the binding b. Or, None if key, the first part of b, was already bound in m.

val addb : b -> t -> t

addb b m returns a map containing the same bindings as m, plus the binding b. If key, the first part of b was already bound in m, the previous binding disappears.

Equality

val equal : (b -> b -> bool) -> t -> t -> bool

equal p m m' tests whether the maps m and m' are equal, that is contain equal keys and associate them with equal data. p is the equality predicate used to compare the data associated with the keys.

Higher-order functions

val iter : (b -> unit) -> t -> unit

iter f m applies f to all bindings in m. The bindings are passed in increasing order with respect to the ordering over the type of keys.

val fold : (b -> 'a -> 'a) -> t -> 'a -> 'a

fold f m acc computes (f bN .. (f b1 acc)), where b1 .. bN are the bindings of m in increasing order over the type of keys.

val for_all : (b -> bool) -> t -> bool

for_all p m checks if all bindings of the map m satisfy the predicate p.

val exists : (b -> bool) -> t -> bool

exists p m checks if at least one binding of the map m satisfies p.

val filter : (b -> bool) -> t -> t

filter p m returns the map with all the bindings in m that satisfy p.

val merge : (b option -> b option -> b option) -> t -> t -> t

merge f m m' computes a map whose keys is a subset of keys of m and m'. The presence of each such binding, and the corresponding value, is determined with the function f.

val union : (b -> b -> b option) -> t -> t -> t

union f m m' computes a map whose keys is the union of the keys of m and m'. When the same binding is defined in both maps, the function f is used to combine them.

Pretty printer

val pp : Stdlib.Format.formatter -> t -> unit

pp fmt m is a pretty printer of the map m.