module Lru:sig..end
type ('k, 'v) t
type('a, 'b)memo =('a, ('b, exn) Core.Result.t) t
val find : ('k, 'v) t -> 'k -> 'v optionval add : ('k, 'v) t -> key:'k -> data:'v -> unitval remove : ('k, 'a) t -> 'k -> unitval clear : ('a, 'b) t -> unitval create : destruct:('v -> unit) option -> int -> ('k, 'v) tval call_with_cache : cache:('a, 'b) memo -> ('a -> 'b) -> 'a -> 'bval memoize : ?destruct:('b -> unit) ->
('a -> 'b) -> int -> ('a, 'b) memo * ('a -> 'b)