functor (H : Cacheable) (R : Result->
  sig val clear : unit -> unit val merge : (H.t -> R.t) -> H.t -> R.t end