package aches
Install
Dune Dependency
Authors
Maintainers
Sources
md5=c9c5400e7ae19100b945279835ff3e5c
sha512=7f37b721e2ca32e5e96fbf8df1bbd72c9060b6826bd95a21ea81af5fdd0c1961d3d7fb41210966aac7c277ec7f91fd32e3e284b583cb02121dc589646642f5c0
doc/aches.vache/Vache/SingletonMap/index.html
Module Vache.SingletonMap
Source
SingletonMap(H)
is a map module but it only supports singleton maps: maps with at most one element.
The create
function ignores its size-limit parameter: the size limit 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.
A Mutable structure akin to a hash-table, but with a size bound. Note that, different caches have different policies towards the size bounds: some uphold the bound strictly, some treat the bound as a suggestion. In addition, some caches count their elements somewhat sloppily.
In general, the caches of Aches are intended to be used in settings that do not require strict, by-the-number, extremely-predictable behaviors.
See Vache
(or Functors
) for more information.
Parameters
module H : Hashtbl.HashedType
Signature
The type of caches holding bindings from key
to 'a
create n
creates a cache with a size-bound of n
. Remember that the size-bound is not upheld strictly by all caches. Moreover, caches instantiated with a specialised size (i.e., empty and singleton caches) ignore the size parameter entirely.
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 Vache
(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
.
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.
capacity c
is the number of bindings c
can hold: capacity (create n) = n