In this commit:
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:
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.