Library
Module
Module type
Parameter
Class
Class type
Signature of mutable LRU maps.
Keys in t
.
Values in t
.
val create : ?random:bool -> int -> t
create ?random cap
is a new map with capacity cap
.
~random
randomizes the underlying hash table, and defaults to false
. See Hashtbl.create
.
val is_empty : t -> bool
is_empty t
is true
iff t
is empty.
val items : t -> int
items t
is the number of bindings in t
.
val size : t -> int
size t
is the combined size of bindings in t
.
val capacity : t -> int
capacity t
is the maximum combined weight of bindings this map will hold before they start being discarded in least-recently-used order.
val resize : int -> t -> unit
resize cap t
will change the capacity of t
to cap
. If the current size
is greater than cap
, least-recently-used elements are discarded to fit cap
.
k
find k t
is the v
bound to k
. The binding k -> v
is promoted to most-recently-used. When k
is not bound in t
, the result is None
.
add k v t
adds the binding k -> v
. If k
is alread bound, the old binding is replaced. In either case, the binding k -> v
becomes the most-recently used.
lru t
is the least-recently-used binding in t
, or None
, when t
is empty.
val drop_lru : t -> unit
drop_lru t
removes the binding lru t
.
Traversal direction for operations that visit all bindings.
`Up
means least-to-most recently used, or increasing relevance.`Down
means most-to-least recently used, or decreasing relevance.fold f z t
is f k0 v0 (... (f kn vn z))
. ~dir
controls the order of folding, defaults to `Up
.
iter f t
applies f
to all the bindings in t
. ~dir
controls the order of application, defaults to `Up
.
to_list t
are the bindings in t
. ~dir
controls the order, defaults to `Up
.
of_list kvs
is a new map with the bindings from kvs
. If there are multiple bindings for k
, the right-most is chosen.
~cap
is the capacity of the new map. It defaults to the total weight of bindings in kvs
. If given, and smaller than total weight of v
s, bindings are discarded from the left of the list.
val pp :
?pp_size:(Format.formatter -> (int * int) -> unit) ->
?sep:(Format.formatter -> unit -> unit) ->
(Format.formatter -> (k * v) -> unit) ->
Format.formatter ->
t ->
unit