Library
Module
Module type
Parameter
Class
Class type
EmptyMap(H)
is a map module but it only supports the empty map: a map with zero elements.
The create
function is replaced by a unit-taking value: the capacity is fixed.
Note that all policies are equivalent in the case of an empty map. This is why the empty map does not require the user to specify any policy.
module H : Hashtbl.HashedType
type key = H.t
The type of keys on which values in the cache are indexed.
replace c k v
binds the key k
to the value v
in the cache c
. This may or may not cause another binding to be removed from the cache, depending on the number of bindings already present in the cache c
, the size-bound of the cache c
, and the policy of the cache c
towards its size-bound.
If k
is already bound to a value in c
, the previous binding disappears and is replaced by the new binding to v
.
Note that in caches with a Sloppy
accounting policy, the old (removed) binding may still count towards the size bound for some time.
fold f c init
folds the function f
and value init
over the bindings of c
from newest to oldest.
Note that for caches with a Weak
overflow policy, this function may fold over a subset of the bindings of c
. See Ringo
(or Functors
) for more details.
fold_oldest_first
is like fold
but in reversed order: oldest elements of c
first. This function has the same limitation as fold
.
val fold_v : ('a -> 'b -> 'b) -> 'a t -> 'b -> 'b
fold_v f c init
folds the function f
and value init
over the values held by the bindings of c
. The order of the traversal is unspecified.
It is less powerful than fold
in that it does not grant access to the bindings' keys, but it does fold over all the values bound in c
, even when the c
has a Weak
overflow policy.
find_opt c k
is Some v
if k
is bound to v
in c
. It is None
otherwise.
Note that the in caches with a non-FIFO
replacement policy, this may have a side effect on the k
-to-v
binding. Specifically, in those caches, it might make it less likely to be removed when supernumerary bindings are inserted.
remove c k
removes the binding from k
in c
. If k
is not bound in c
, it does nothing.
Note that in caches with a Sloppy
accounting policy, removed bindings can still count towards the size bound for some time.
filter c f
removes all the bindings (k, v)
such that f k v = false
.
Note that in caches with a Sloppy
accounting policy, removed bindings can still count towards the size bound for some time.
val length : 'a t -> int
length c
is the number of bindings held by c
.
val capacity : 'a t -> int
capacity c
is the number of bindings c
can hold: capacity (create n) = n
val clear : 'a t -> unit
clear c
removes all bindings from c
.
module H : Hashtbl.HashedType with type t = key
val create : unit -> 'a t