BatMultiPMap
Polymorphic Multi-Map.
This is a polymorphic multi-map, i.e. an association from 1 to many.
val empty : ('a, 'b) t
The empty map, using compare
as comparison function for both keys and values.
val is_empty : ('a, 'b) t -> bool
returns true if the map is empty.
val create : ('a -> 'a -> int) -> ('b -> 'b -> int) -> ('a, 'b) t
create kcomp vcomp
creates a new empty map, using kcomp for key comparison and vcomp for value comparison.
add x y m
returns a map containing the same bindings as m
, plus a binding of x
to y
.
val find : 'a -> ('a, 'b) t -> 'b BatSet.PSet.t
find x m
returns the current binding of x
in m
remove_all x m
returns a map containing the same bindings as m
, except for x
which is unbound in the returned map.
remove k d m
returns a map containing the same bindings as m
, except for k
which is not bound to d
anymore in the returned map. If k
was not bound to d
, nothing is changed. If the operation removes the last binding of k
, then k
is also removed from the set of keys.
val mem : 'a -> ('a, 'b) t -> bool
mem x m
returns true
if m
contains at least a binding for x
, and false
otherwise.
val iter : ('a -> 'b BatSet.PSet.t -> unit) -> ('a, 'b) t -> 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 order in which the bindings are passed to f
is unspecified. Only current bindings are presented to f
: bindings hidden by more recent bindings are not passed to f
.
val map : ('b BatSet.PSet.t -> 'c BatSet.PSet.t) -> (('b -> 'b -> int) -> 'c -> 'c -> int) -> ('a, 'b) t -> ('a, 'c) t
map f vcompgen 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 order in which the associated values are passed to f
is unspecified. vcompgen
will use the vcomp function provided to m
as an argument to generate a new value comparison function.
val mapi : ('a -> 'b BatSet.PSet.t -> 'c BatSet.PSet.t) -> (('b -> 'b -> int) -> 'c -> 'c -> int) -> ('a, 'b) t -> ('a, 'c) t
Same as map
, but the function receives as arguments both the key and the associated value for each binding of the map.
val fold : ('b BatSet.PSet.t -> 'c -> 'c) -> ('a, 'b) t -> 'c -> 'c
fold f m a
computes (f kN dN ... (f k1 d1 (f k0 d0 a))...)
, where k0,k1..kN
are the keys of all bindings in m
, and d0,d1..dN
are the associated data. The order in which the bindings are presented to f
is unspecified.
val foldi : ('a -> 'b BatSet.PSet.t -> 'c -> 'c) -> ('a, 'b) t -> 'c -> 'c
Same as fold
, but the function receives as arguments both the key and the associated value for each binding of the map.
val modify : 'a -> ('b BatSet.PSet.t -> 'b BatSet.PSet.t) -> ('a, 'b) t -> ('a, 'b) t
modify x f m
replaces the binding for x
with f
applied to these values.
val modify_def : 'b BatSet.PSet.t -> 'a -> ('b BatSet.PSet.t -> 'b BatSet.PSet.t) -> ('a, 'b) t -> ('a, 'b) t
modify_def dfl x f m
performs as modify x f m
but it adds f dfl
in m
instead of raising Not_found
if x
was unbound.
val modify_opt : 'a -> ('b BatSet.PSet.t option -> 'b BatSet.PSet.t option) -> ('a, 'b) t -> ('a, 'b) t
modify_opt x f m
allows to modify the bindings for k
in m
or absence thereof.
val of_enum : ?keys:('a -> 'a -> int) -> ?data:('b -> 'b -> int) ->
('a * 'b) BatEnum.t -> ('a, 'b) t
creates a map from an enumeration, using the specified function for key comparison or compare
by default.
module Infix : sig ... end
Infix operators over a BatMultiPMap
val print : ?first:string -> ?last:string -> ?sep:string -> ?kvsep:string ->
('a BatInnerIO.output -> 'b -> unit) -> ('a BatInnerIO.output -> 'c -> unit) -> 'a BatInnerIO.output -> ('b, 'c) t -> unit