functor (C : Config->
  functor (E : Enumerable->
    sig
      type elt = E.elt
      type collection = E.t
      type ('partial, 'result) t = {
        register : (elt, 'partial) worker Join.chan;
        register_interruptible :
          ((elt, 'partial) interruptible_worker * kill) Join.chan;
        fold :
          collection ->
          ('partial -> 'result -> 'result) -> 'result -> 'result;
      }
      val create : unit -> ('partial, 'result) t
    end