sig
  type input
  type key
  type inter
  type output
  val name : MapReduce.id
  val map :
    MapReduce.Job.input ->
    (MapReduce.Job.key * MapReduce.Job.inter) list Async.Std.Deferred.t
  val reduce :
    MapReduce.Job.key * MapReduce.Job.inter list ->
    MapReduce.Job.output Async.Std.Deferred.t
end