in which things are mapped, but also reduced - a really nice example of Agents in Clojure using a log analyzer. Calculations are distributed across parallel processes, a central process reads and distributes, and at the end everything is merged. So classic map/reduce technique. It would have been nice if the reading had also been parallelized, because on flat systems with many spindles, parallel reading can indeed be faster than sequential reading (especially with gigantic file sizes as postulated by Tim Bray in the original problem). But still, it's nice to see a compact, meaningful example of map/reduce in Clojure. I like the language more and more.