Unparse attoparsec
December 7, 2018 ยท View on GitHub
This library provides an interface to build programs that can be interpreted both as parsers and as printers.
This library essentially defines two types:
Parser :: * -> * -> *, a wrapper aroundattoparsec's ownParser :: * -> *;Printer :: * -> * -> *, a type which does the inverse of a parser;
and a type class Attoparsec, instantiated by Parser and Printer, wrapping
attoparsec's core operations (including lookaheads!).
Monadic and applicative composition can be used under a ForallF Monad p constraint
(resp. ForallF Applicative p), meaning that for all types x, the type p x
is an instance of Monad (resp. Applicative). These constraints are made
possible thanks to the constraints package. The
profunctor-monad package
provides convenient ways to work with them (with or rebindable syntax).
Examples
Check out example/AesonParser.hs