Attoparsec has modules specialized for Strict/Lazy, ByteString/Text, Char8 (ascii)/Char. But it doesn't have all the combinations.
I think Data.Attoparsec.ByteString.Lazy.Char8
which isn't provided would be particularly convenient for grinding through large reports which tend to be encoded as ascii.
Do you know why it doesn't exist?
I don't think this is needed, because the two modules don't appear to overlap with each other.
Data.Attoparsec.ByteString.Char8
provides extra parsers specifically for parsing ASCII data. These are just variations of theirWord8
counterparts, and they use the same underlying monad, so you should be able to mix and match without issue.Data.Attoparsec.ByteString.Lazy
provides an alternativeparse
function that you can use to run a parser against a lazy bytestring. This isn't special in any way, it's just a wrapper around the strict version, iteratively pushing chunks of the lazyByteString
into your parser.From what I can tell, there's no reason you shouldn't be able to just use both of them together. For example:
You use the combinators from
Char8
to define your parser, and then you use the functions fromLazy
to run it. So there's no need for aData.Attoparsec.ByteString.Lazy.Char8
.