Module Id.Map
Finite maps of identifiers.
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 update : key -> ('a option -> 'a option) -> '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 filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
Like
map
but keeping only bindings mapped toSome
val symmetric_diff_fold : (key -> 'a option -> 'a option -> 'b -> 'b) -> 'a t -> 'a t -> 'b -> 'b
symmetric_diff f ml mr acc
will efficiently fold over the difference betweenml
andmr
, assumed that they share most of their internal structure. A call tof k vl vr
means that ifvl
isSome
, thenk
exists inml
. Similarly, ifvr
isSome
, thenk
exists inmr
. If bothvl
andvr
areSome
, thenvl != vr
.
module Smart : sig ... end
module Monad : functor (M : Util.Map.MonadS) -> sig ... end
Fold operators parameterized by any monad.