Module Level.Map
include CMap.ExtS with type key = t and module Set := Set
The underlying Map library
include CSig.MapS
val empty : 'a t
val is_empty : 'a t -> bool
val mem : key -> 'a t -> bool
val add : key -> 'a -> 'a t -> 'a t
val singleton : key -> 'a -> 'a t
val remove : key -> 'a t -> 'a t
val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> 'c t
val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
val iter : (key -> 'a -> unit) -> 'a t -> unit
val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
val for_all : (key -> 'a -> bool) -> 'a t -> bool
val exists : (key -> 'a -> bool) -> 'a t -> bool
val filter : (key -> 'a -> bool) -> 'a t -> 'a t
val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
val cardinal : 'a t -> int
val bindings : 'a t -> (key * 'a) list
val min_binding : 'a t -> key * 'a
val max_binding : 'a t -> key * 'a
val choose : 'a t -> key * 'a
val choose_opt : 'a t -> (key * 'a) option
val split : key -> 'a t -> 'a t * 'a option * 'a t
val find : key -> 'a t -> 'a
val find_opt : key -> 'a t -> 'a option
val map : ('a -> 'b) -> 'a t -> 'b t
val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
val set : key -> 'a -> 'a t -> 'a t
Same as
add
, but expects the key to be present, and thus faster.- raises Not_found
when the key is unbound in the map.
val modify : key -> (key -> 'a -> 'a) -> 'a t -> 'a t
Apply the given function to the binding of the given key.
- raises Not_found
when the key is unbound in the map.
val bind : (key -> 'a) -> Set.t -> 'a t
bind f s
transform the setx1; ...; xn
intox1 := f x1; ...; xn := f xn
.
val fold_left : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
Alias for
fold
, to easily track where we depend on fold order.
val height : 'a t -> int
An indication of the logarithmic size of a map
val filter_range : (key -> int) -> 'a t -> 'a t
find_range in_range m
Given a comparison functionin_range x
, that tests ifx
is below, above, or inside a given rangefilter_range
returns the submap ofm
whose keys are in range. Note thatin_range
has to define a continouous range.
val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
update x f m
returns a map containing the same bindings asm
, except for the binding ofx
. Depending on the value ofy
wherey
isf (find_opt x m)
, the binding ofx
is added, removed or updated. Ify
isNone
, the binding is removed if it exists; otherwise, ify
isSome z
thenx
is associated toz
in the resulting map. Ifx
was already bound inm
to a value that is physically equal toz
,m
is returned unchanged (the result of the function is then physically equal tom
).
module Smart : sig ... end
module Unsafe : sig ... end
module Monad : functor (M : CMap.MonadS) -> sig ... end
Fold operators parameterized by any monad.
val diff : 'a t -> 'a t -> 'a t
diff x y
removes bindings from x that appear in y (whatever the value).