module Make: functor (
Strat
:
Strategy
) ->
functor (
Store
:
Store
) ->
S
with type 'a with_init_args = ('a Store.with_init_args Strat.with_init_args)
type ('k, 'v)
t
A key value cache
type 'a
with_init_args
Used to specify the type of the
Cache.S.create
and
Cache.S.memoize
function. This
describes the arguments required to initialise the caching strategy and
the store. For instance if the store doesn't take any argument (eg.:
Cache.Store.Table
) and the strategy takes an
int
(eg.:
Cache.Strategy.Lru
)
this type will be:
type 'a with_init_args = int -> 'a
type ('a, 'b)
memo = ('a, ('b, exn) Core.Result.t) t
val find : ('k, 'v) t -> 'k -> 'v option
val add : ('k, 'v) t -> key:'k -> data:'v -> unit
val remove : ('k, 'a) t -> 'k -> unit
val clear : ('a, 'b) t -> unit
val create : destruct:('v -> unit) option -> ('k, 'v) t with_init_args
val call_with_cache : cache:('a, 'b) memo -> ('a -> 'b) -> 'a -> 'b
val memoize : ?destruct:('b -> unit) ->
('a -> 'b) -> (('a, 'b) memo * ('a -> 'b)) with_init_args