[Haskell-cafe] Grouping - Map / Reduce

Gü?nther Schmidt gue.schmidt at web.de
Tue Mar 24 17:15:05 EDT 2009


Hi,

let say I got an unordered lazy list of key/value pairs like

[('a', 99), ('x', 42), ('a', 33) ... ]

and I need to sum up all the values with the same keys.

So far I wrote a naive implementation, using Data.Map, foldl and insertWith.

The result of this grouping operation, which is effectively another list
of key/value pairs, just sums this time, needs to be further processed.

The building of this map is of course a bottleneck, the successive
processing needs to wait until the entire list is eventually consumed
the Map is built and flattened again.

Is there another way of doing this, something more "streaming
architecture" like?

Is Googles "Map - Reduce" related to this?

Günther




More information about the Haskell-Cafe mailing list