# Module Cache.Lru

    module Lru: sig .. end

Least recently used caching

    type ('k, 'v) t

    type ('a, 'b) memo = ('a, ('b, exn) Core.Std.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 -> int -> ('k, 'v) t

    val call_with_cache : cache:('a, 'b) memo -> ('a -> 'b) -> 'a -> 'b

    val memoize : ?destruct:('b -> unit) ->
           ('a -> 'b) -> int -> ('a, 'b) memo * ('a -> 'b)