Module Tjr_lib_core.Lru_two_gen_v3

Version without delete moved to OLD 2021-03-10

Version with delete

module Map_lower : sig ... end

The unknown implementation for the lower map - just find_opt

include Map_lower
type ('k, 'v, 't) map_lower = {
find_opt : 'k -> ('v option't) Tjr_monad.m;
}
module Entry : sig ... end

Entries in the internal maps can record that an entry has been deleted, or that an entry is present in the lower map m3;

include Entry
type 'v entry = [
| `Inserted of 'v
| `Deleted
| `Lower_some of 'v
| `Lower_none
]
type 'v dirty_entry = [
| `Inserted of 'v
| `Deleted
]
module Cache_state : sig ... end

Cache state; internal

module Api_explicit : sig ... end

API with explicit cache state

module Map_m : sig ... end

API we implement, without explicit state; find_opt, insert, delete, trim etc

module With_explicit_cache : sig ... end

For some applications, we want very precise control of the cache, ie not to have the cache state hidden inside functions, but instead be referenced explicitly

val make : monad_ops:'t Tjr_monad.monad_ops -> m3:('k'v't) Map_lower.map_lower -> max_sz:int -> ('k'v't) Map_m.map_m

Version without explicit cache state

Common instances

val make_imperative : m3:('a'b, Tjr_monad.Imperative.imperative) Map_lower.map_lower -> max_sz:int -> ('a'b, Tjr_monad.Imperative.imperative) Map_m.map_m
val make_lw : m3:('a'b, Tjr_monad.With_lwt.lwt) Map_lower.map_lower -> max_sz:int -> ('a'b, Tjr_monad.With_lwt.lwt) Map_m.map_m
module Test : functor () sig ... end