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