Library
Module
Module type
Parameter
Class
Class type
Make(K)(P)
is the priority search queue with bindings K.t -> P.t
.
val empty : t
empty
is the search queue that contains no bindings.
val size : t -> int
size t
is the number of distinct bindings in t
.
k
find k t
is Some p
if t
contains the binding k -> p
, or None
otherwise.
add k p t
is t
with the binding k -> p
. If k
is already bound in t
, that binding is replaced.
adjust f k t
is t
with the binding k -> p
replaced by k -> f p
. When k
is not bound in t
, the result is t
.
p
min t
is the binding Some (k, p)
where p
is minimal in t
, or None
if t
is empty
.
fold_at_most p0 f z q
folds f
over bindings k -> p
where p
is not larger than p0
, in key-ascending order.
iter_at_most p0 f q
applies f
to the bindings k -> p
where p
is not larger than p0
, in key-ascending order.
fold f z t
is f k0 p0 (f k1 p1 ... (f kn pn z))
. Bindings are folded over in key-ascending order.
filter p t
is the search queue with exactly the bindings in t
which satisfy the predicate p
.
partition p t
splits t
into (t1, t2)
, where t1
contains the bindings in t
which satisfy the predicate p
, and t2
contains those that don't.
iter f t
applies f
to all bindings in t
in key-ascending order.
of_list kps
is a t
with the bindings from kps
. When there are multiple bindings for a given k
, it is unspecified which one is chosen.
of_sorted_list kps
is t
with the bindings in kps
. This operation is generally faster than of_list
. kps
must contain the bindings in key-ascending order without repetitions. When this is not the case, the result is undefined.
val pp :
?sep:(Format.formatter -> unit -> unit) ->
(Format.formatter -> (k * p) -> unit) ->
Format.formatter ->
t ->
unit
pp ?sep pp_kp ppf t
pretty-prints t
to ppf
, using pp_kp
to print the bindings and ~sep
to separate them. ~sep
defaults to Format.print_space
.