functor (H0 : Cacheable->   sig     val clear : unit -> unit     val merge : (H0.t -> H0.t -> bool) -> H0.t -> H0.t -> bool   end