Skip to content

Instantly share code, notes, and snippets.

@applicative
applicative / mem.hs
Created July 20, 2012 16:15 — forked from jartur/mem.hs
Memory hog + Stack overflow
import qualified Data.Map as M -- cabal install unordered-containers
import qualified Data.ByteString.Char8 as B
import Data.List (foldl')
main = B.interact $ exhibit . foldl' updateCount M.empty . B.words
where exhibit counts = B.concat $ zipWith pretty keys_ counts_ where
counts_ = M.elems counts ; keys_ = M.keys counts
pretty w count = w +++ " :: " +++ show count +++ "\n"
updateCount m w = M.insertWith (+) w (1::Int) m