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.Char8provides extra parsers specifically for parsing ASCII data. These are just variations of theirWord8counterparts, and they use the same underlying monad, so you should be able to mix and match without issue.Data.Attoparsec.ByteString.Lazyprovides an alternativeparsefunction 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 lazyByteStringinto 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
Char8to define your parser, and then you use the functions fromLazyto run it. So there's no need for aData.Attoparsec.ByteString.Lazy.Char8.