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