Krzysztof Kościuszkiewicz wrote:
> Another story from an (almost) happy Haskell user that finds himself
> overwhelmed by laziness/space leaks.
> 
> I'm trying to parse a large file (>600MB) with a single S-expression
> like structure. With the help of ByteStrings I'm down to 4min processing
> time in constant space. However, when I try to wrap the parse results
> in a data structure, the heap blows up - even though I never actually
> inspect the structure being built! This bugs me, so I come here looking
> for answers.

Note that Parsec has to parse the whole file before it can decide
whether to return a result (Left _) or an error (Right _). ghc would
have to be quite smart to eliminate the creation of the expression
tree entirely.

The polyparse library (http://www.cs.york.ac.uk/fp/polyparse/)
offers some lazy parsers, maybe one of those fits your needs.
Text.ParserCombinators.Poly.StateLazy is the obvious candidate.

HTH,

Bertram
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to