sig
  type input
  type key
  type value
  type output
  val compare_keys :
    MapReduce.Computation.key -> MapReduce.Computation.key -> int
  val map :
    MapReduce.Computation.input ->
    (MapReduce.Computation.key * MapReduce.Computation.value) list
  val combine :
    MapReduce.Computation.key ->
    MapReduce.Computation.value ->
    MapReduce.Computation.value -> MapReduce.Computation.value
  val reduce :
    MapReduce.Computation.key ->
    MapReduce.Computation.value ->
    MapReduce.Computation.output -> MapReduce.Computation.output
end