[Haskell-cafe] Processing of large files

Ketil Malde ketil+haskell at ii.uib.no
Mon Nov 1 14:48:44 EST 2004


"Alexander N. Kogan" <alexander at kogan.nnov.ru> writes:

> How should I modify it to make it useful on large file?
> It eats too much memory...

> procFile =
>     putStrLn       .
>     show       .
>     foldl merge []      .
      ^^^^^

>     words

foldl is infamous for building the complete list, before evaluating
anything. Did you try foldr or foldl' instead?   Also, you may want to
make 'merge' more strict; I suspect you build lazy tuples that look like
("word",1+1+1+1+...) and only get evaluated at the end.

Using heap profiling will probably give you some hints (well
documented in the GHC manual, ask if you get stuck)

-kzm
-- 
If I haven't seen further, it is by standing in the footprints of giants


More information about the Haskell-Cafe mailing list