Cache
module type S = sig ... end
module type Cache = sig ... end
module Unary (A : S) : Cache with type 'a value = A.t -> 'a
module Binary (A : S) : Cache with type 'a value = A.t -> A.t -> 'a