Issue #5 invalid
Edward Wang
created an issue

In this commit:

[[https://bitbucket.org/bos/attoparsec/changeset/fa4ee945eb21|https://bitbucket.org/bos/attoparsec/changeset/fa4ee945eb21]]

you hide the ensure function. Can you elaborate a little bit? I find myself in need of it. A binary file I want to parse starts with three 4-byte magics, one of them is length of the file:

{{{

!haskell

parseMagics :: Parser () parseMagics = do _ <- string "FOR1" len <- big_endians 4 _ <- string "BEAM" return $ ensure len

big_endians :: Int -> Parser Int big_endians n = do ws <- count n anyWord8 return $ foldl1 (\a b -> a * 256 + b) $ map fromIntegral ws }}}

You see, ensure turns out to be very useful under such circumstances.

Comments (7)

  1. Log in to comment