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