Library
Module
Module type
Parameter
Class
Class type
SingletonMap(H)
is a map module but it only supports singleton maps: maps with at most one element.
The create
function is replaced to take a ()
parameter because the size is hardcoded.
Note that all policies are equivalent in the case of a singleton map. This is why the singleton 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
.
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.
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
.
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 = true
.
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