[Haskell-cafe] Parsec and binary files
Duncan Coutts
duncan.coutts at worc.ox.ac.uk
Thu Jun 8 11:53:07 EDT 2006
On Thu, 2006-06-08 at 11:49 -0300, Atila Romero wrote:
> Im trying to use parsec to split a file, using the null character as a
> separator.
> Works fine with very small files but fails if they are a little bit larger.
> I guess parsec is trying to parse everthing first and print the results
> last.
I think so.
> Am I doing something wrong or parsec is just not the right tool to the job?
Right. In this case I would use lazy byte strings.
module main where
import qualified Data.ByteString.Lazy as B
main = do
input <- B.getContents
let emails = B.split 0 input
...
This lazily reads and splits into chunks using a 0 byte as separator.
However this needs a fairly recent version of the 'fps' package. (In ghc
6.6 Data.ByteString and Data.ByteString.Lazy will be provided in the
base package.)
Duncan
More information about the Haskell-Cafe
mailing list