That's really cool, and is the kind of good benchmark I was referring to. I'm curious to see how it compares to an iteratee approach. I suspect in this case that there wouldn't be much of a difference, because iteratees are suited especially well for handling multiple concurrent streams, and this deals with only one.
> import qualified Data.ByteString.Lazy.Char8 as L
> main = L.getContents >>= print . L.count '\n'
edit: actually it beats "wc", and is roughly same speed as "wc -l".