Legend:
Library
Module
Module type
Parameter
Class
Class type
Set(RA)(O)(H) is a SET indexed by H and governed by RA and O.
A Mutable structure akin to a set, 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 Vache are intended to be used in settings that do not require strict, by-the-number, extremely-predictable behaviors.
create n creates a unit-cache with a size-bound of n. Remember that 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.
add c v adds the value v to the cache c. This may or may not cause another element to be removed from the cache, depending on the number of elements already present in the cache c, the size-bound of the cache c, and the policy of the cache c towards its size-bound.
Note that after the add c v call returns, v is the most recent element in the cache. This is true whether or not the element was already in the cache before the call. This is true for whichever replacement policy (see Vache.replacement) the cache has.
If v is already present in c, and the accounting policy of the cache is Sloppy, the element may or may not count twice towards the size bound for some time. On the other hand, if the cache accounting is Precise then the element v only counts once. See Vache.accounting for more details.
mem c v is true if v is present in c. It is false otherwise.
Note that the in caches with a non-FIFO replacement policy, this may have a side effect on the v element. Specifically, in those caches, it might make it less likely to be removed when supernumerary elements are inserted.
remove c v removes the element v from c. If v is not present in c, it does nothing.
Note that in caches with a Sloppy accounting policy, removed elements can still count towards the size bound for some time. On the other hand, if the cache's accounting policy is Precise then the element immediately stops counting towards the size bound.