module BatPMap:Polymorphic Map.sig
..end
This is a polymorphic map, similar to standard library Map
module
but in a defunctorized style.
Author(s): Xavier Leroy (Base library), Nicolas Cannasse, Markus Mottl, David Rajchenbach-Teller
type ('a, 'b)
t
val empty : ('a, 'b) t
compare
as key comparison function.val is_empty : ('a, 'b) t -> bool
val create : ('a -> 'a -> int) -> ('a, 'b) t
val add : 'a -> 'b -> ('a, 'b) t -> ('a, 'b) t
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
, its previous binding disappears.val find : 'a -> ('a, 'b) t -> 'b
find x m
returns the current binding of x
in m
,
or raises Not_found
if no such binding exists.val remove : 'a -> ('a, 'b) t -> ('a, 'b) t
remove x m
returns a map containing the same bindings as
m
, except for x
which is unbound in the returned map.val mem : 'a -> ('a, 'b) t -> bool
mem x m
returns true
if m
contains a binding for x
,
and false
otherwise.val exists : 'a -> ('a, 'b) t -> bool
mem
.val iter : ('a -> 'b -> 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 : ('a -> 'b) -> ('c, 'a) t -> ('c, 'b) t
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 order in which the associated values are passed to f
is unspecified.val mapi : ('a -> 'b -> 'c) -> ('a, 'b) t -> ('a, 'c) t
map
, but the function receives as arguments both the
key and the associated value for each binding of the map.val fold : ('a -> 'b -> 'b) -> ('c, 'a) t -> '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
,
and d1 ... dN
are the associated data.
The order in which the bindings are presented to f
is
unspecified.val foldi : ('a -> 'b -> 'c -> 'c) -> ('a, 'b) t -> 'c -> 'c
fold
, but the function receives as arguments both the
key and the associated value for each binding of the map.val filter : ('a -> bool) -> ('b, 'a) t -> ('b, 'a) t
filter f m
returns a map where only the values a
of m
such that f a = true
remain. The bindings are passed to f
in increasing order with respect to the ordering over the
type of the keys.val filteri : ('a -> 'b -> bool) -> ('a, 'b) t -> ('a, 'b) t
filter f m
returns a map where only the (key, value) pairs
key
, a
of m
such that f key a = true
remain. The
bindings are passed to f
in increasing order with respect
to the ordering over the type of the keys.val filter_map : ('a -> 'b -> 'c option) -> ('a, 'b) t -> ('a, 'c) t
filter_map f m
combines the features of filteri
and
map
. It calls calls f key0 a0
, f key1 a1
, f keyn an
where a0..an
are the elements of m
and key0..keyn
the
respective corresponding keys. It returns the map of
pairs keyi
,bi
such as f keyi ai = Some bi
(when f
returns
None
, the corresponding element of m
is discarded).val choose : ('a, 'b) t -> 'a * 'b
val min_binding : ('a, 'b) t -> 'a * 'b
val max_binding : ('a, 'b) t -> 'a * 'b
val enum : ('a, 'b) t -> ('a * 'b) BatEnum.t
val of_enum : ?cmp:('a -> 'a -> int) -> ('a * 'b) BatEnum.t -> ('a, 'b) t
compare
by default.val for_all : ('a -> 'b -> bool) -> ('a, 'b) t -> bool
val exists_f : ('a -> 'b -> bool) -> ('a, 'b) t -> bool
val partition : ('a -> 'b -> bool) ->
('a, 'b) t -> ('a, 'b) t * ('a, 'b) t
val add_carry : 'a -> 'b -> ('a, 'b) t -> ('a, 'b) t * 'b option
add_carry k v m
adds the binding (k,v)
to m
, returning the new map and optionally the previous value bound to k
.val modify : 'a -> ('b -> 'b) -> ('a, 'b) t -> ('a, 'b) t
modify k f m
replaces the previous binding for k
with f
applied to that value. If k
is unbound in m
or Not_found
is
raised during the search, m
is returned unchanged.val extract : 'a -> ('a, 'b) t -> 'b * ('a, 'b) t
extract k m
removes the current binding of k
from m
,
returning the value k
was bound to and the updated m
.val pop : ('a, 'b) t -> ('a * 'b) * ('a, 'b) t
pop m
returns a binding from m
and m
without that
binding.val print : ?first:string ->
?last:string ->
?sep:string ->
('a BatInnerIO.output -> 'b -> unit) ->
('a BatInnerIO.output -> 'c -> unit) ->
'a BatInnerIO.output -> ('b, 'c) t -> unit