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