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