Mutable LRU map
Keys in t.
Values in t.
val create : ?random:bool -> int -> tcreate ?random cap is a new map with capacity cap.
~random randomizes the underlying hash table. It defaults to false. See Hashtbl.create.
Note. The internal hash table is created with size cap.
- raises Invalid_argument
when
cap < 0.
val is_empty : t -> boolis_empty t is true iff there are no bindings in t.
val size : t -> intsize t is the number of bindings in t.
Limiting the weight of bindings
val weight : t -> intweight t is the combined weight of bindings in t.
val resize : int -> t -> unitresize cap t sets t's capacity to cap, while leaving the bindings unchanged.
- raises Invalid_argument
when
cap < 0.
val trim : t -> unittrim t ensures that weight t <= capacity t by dropping bindings in LRU-to-MRU order.
Access by k
find k t is Some v when k -> v is bound in t, or None otherwise.
Note This operation does not change the recently-used order.
promote k t promotes the binding for k, if it exists, to most-recently-used.
add k v t adds the binding k -> v to t as the most-recently-used binding.
Note add does not remove bindings. To ensure that the resulting map is not over capacity, combine with trim.
Access to least-recently-used bindings
lru t is the least-recently-used binding in t, or None, when t is empty.
val drop_lru : t -> unitdrop_lru t removes the binding lru t.
Aggregate access
fold f z t is f k0 v0 (... (f kn vn z)), where k0 -> v0 is LRU and kn -> vn is MRU.
iter f t applies f to all the bindings in t in in LRU-to-MRU order.
Conversions
Pretty-printing
val pp : ?pp_size:(Stdlib.Format.formatter -> (int * int) -> unit) -> ?sep:(Stdlib.Format.formatter -> unit -> unit) -> (Stdlib.Format.formatter -> (k * v) -> unit) -> Stdlib.Format.formatter -> t -> unit