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