<div dir="ltr">    The newly released package picoparsec [1] is a fork of attoparsec that works with a much wider variety of input types than just ByteString and Text. Parsers written with Picoparsec will generally perform a bit slower than Attoparsec on strict ByteString and Text, somewhat faster than Attoparsec on lazy Text, and much faster than Parsec on any of the mutually-supported input types.<br><br>    That being said, the main point of the library is to enable the writing of generic parsers that are not constrained to any single input type. Depending on the parser primitives used, Picoparsec will take any input whose type is an instance of either NullMonoid, LeftGCDMonoid, FactorialMonoid, or TextualMonoid. These are some of the subclasses of Monoid defined in the monoid-subclasses package [2]. Some of the input types that are fully supported out of the box<br>would be:<br><br>- Text<br>- String<br>- Seq Char<br>- Vector Char<br>- ByteStringUTF8, a thin newtype wrapper around ByteString<br>- Stateful (Map String a) Text, if you need to parse Text and keep track of the the symbol table state<br>- OffsetPositioned String, in case you need to keep track of the current input position<br>- LinePositioned Text, to keep track of the current line and column<br><br>   This release can be seen as the belated completion of the work described in my Haskell Symposium 2013 presentation [3]. The name Picoparsec seemed to fit in just the right place between Parsec and Attoparsec, especially since Nanoparsec [4] has already been taken.<br><br>[1] <a href="http://hackage.haskell.org/package/picoparsec">http://hackage.haskell.org/package/picoparsec</a><br>[2] <a href="http://hackage.haskell.org/package/monoid-subclasses">http://hackage.haskell.org/package/monoid-subclasses</a><br>[3] <a href="https://github.com/blamario/monoid-subclasses/wiki/Files/HaskellSymposium2013.pdf">https://github.com/blamario/monoid-subclasses/wiki/Files/HaskellSymposium2013.pdf</a><br>[4] <a href="http://hackage.haskell.org/package/nanoparsec">http://hackage.haskell.org/package/nanoparsec</a><br><br>
</div>