[Haskell-cafe] Re: Propagating Parsec errors

Tomasz Zielonka tomasz.zielonka at gmail.com
Sun Dec 5 17:31:08 EST 2004


On Sun, Dec 05, 2004 at 07:36:07PM +0100, Peter Simons wrote:
> Mark Carroll writes:
> 
>  > Is there a way in Parsec to, within a parser, throw an
>  > error generated by another parser?
> 
> How about wrapping the ParseError into your result type?
> Like this:
> 
>   data Foo = Bar String | ... | BadLuck ParseError
> 
> Then you could run any number of parsers (with 'runParser')
> inside another parser and return their results and errors
> without needing any special support from the Parsec library.

But it will work against our intentions. For example, if you have

    try p1 <|> p2

and p1 returns (BadLuck err), than p2 won't be tried. p1 should *fail* with
err.

I feel that the amount of work to support this feature in Parsec is minimal.
If I find some time tomorrow _and_ I find a way to experiment with Parsec's
fptools repository, I will try to implement it.

Best regards,
Tomasz


More information about the Haskell-Cafe mailing list