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