groupMapReduce

trait Collection[A] {
  def groupMapReduce[K, B](k: (A) => K)(f: (A) => B)(op: (B, B) => B): Map[K, B]
}

groupMapReduce cria um Map agrupando os elementos sob a chave emitida pela função k quando aplicada a eles, aplicando a função de transformação f aos elementos agrupados e, finalmente, reduzindo os elementos transformados usando o operador binário associativo op .