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