Module MapReduce

module MapReduce: sig .. end
The core MapReduce types --- Job, App, and Controller

type id = string 

Job interface


module type Job = sig .. end
MapReduce jobs transform data using the MapReduce framework

The following three functions are used by the framework to find the module corresponding to a Job. For each module J of type Job, you must call
      register_job (module J)
    
so that the framework can find the module when needed.
val register_job : (module MapReduce.Job) -> unit
val get_job : id -> (module MapReduce.Job) option
val list_jobs : unit -> id list

Controller interface


module type Controller = functor (Job : Job) -> sig .. end

MapReduce Apps


module type EntryPoint = sig .. end
module type App = sig .. end

The following three functions are used by the framework to find the module corresponding to an App. For each module A of type App, you must call
      register_job (module A)
    
so that the framework can find the module when needed. We have done this in the starter code we've provided.
val register_app : (module MapReduce.App) -> unit
val get_app : id -> (module MapReduce.App) option
val list_apps : unit -> id list