Functor JoinMapRed.Make

module Make: 
functor (P : Problem) -> S with type input = P.input and type output = P.output and type init = P.init
Functor building a map/reduce implementation for a given problem.
Parameters:
P : Problem

type init 
The type of data sent by server to clients at startup.
type input 
The type of input values passed to agents.
type output 
The type of overall result.
val client : JoinHelper.configuration -> unit
client cfg uses the cfg to connect to the server, and registers itself to receive computations (i.e. executions of JoinMapRed.Problem.map).
val server : JoinHelper.configuration ->
init ->
('a, input) JoinPool.Simple.enum ->
output -> output
server cfg i e z sets up a server using the passed configuration, and dispatches tasks to registered clients using a pool.

The result is reduce k1 v1 (reduce k2 v2 (... (reduce kn vn z))) where: