Send Beginners mailing list submissions to

To subscribe or unsubscribe via the World Wide Web, visit
or, via email, send a message with subject or body 'help' to

You can reach the person managing the list at

When replying, please edit your Subject line so it is more specific
than "Re: Contents of Beginners digest..."

Today's Topics:

   1. Re:  ReadP & Error Reporting (David McBride)


Message: 1
Date: Sat, 10 Mar 2018 16:04:01 -0500
From: David McBride <>
To: The Haskell-Beginners Mailing List - Discussion of primarily
        beginner-level topics related to Haskell <>
Subject: Re: [Haskell-beginners] ReadP & Error Reporting
Content-Type: text/plain; charset="utf-8"

My first instinct is that no, there's not much you can do with this.  You
could wrap every combinator to return more detailed error messages, which
might be *okay*.  Or you could use the heavier parsing libraries and get
all the error reporting for free.

On Sat, Mar 10, 2018 at 2:25 AM, Hilco Wijbenga <>

> Hi all,
> I recently discovered ReadP (Text.ParserCombinators.ReadP) and I
> wondered if I could use it to write simple parsers _with decent error
> reporting_.
> Let's say I want to parse "[ab]   [12]" (i.e. either 'a', or 'b',
> followed by whitespace, followed by '1', or '2'). I believe something
> like this does the trick:
> parse = do
>     name <- ReadP.choice [ReadP.char 'a', ReadP.char 'b']
>     ReadP.skipMany1 (ReadP.satisfy (\ch -> ch == ' ' || ch == '\t'))
>     value <- ReadP.choice [ReadP.char '1', ReadP.char '2']
>     return (name, value)
> How do you add error handling to this? Obviously, I could change the
> signature to return an Either but I don't see how I "return" anything
> other than Right.
> E.g., I would want to give a warning like "Expected 'a', or 'b'" if
> anything other than 'a', or 'b' is used as first character. Similarly
> for '1' and '2'. The obvious(?) way would be to add an error result as
> the last option. The best I can come up with is adding ReadP.pfail to
> the list of choices but that doesn't allow me to add a useful error.
> Is ReadP simply not powerful enough for this? Or am I overlooking
> something obvious?
> I did some googling and there is plenty about creating parsers with
> parser combinators but I could not find anything about error handling.
> Cheers,
> Hilco
> _______________________________________________
> Beginners mailing list
-------------- next part --------------
An HTML attachment was scrubbed...


Subject: Digest Footer

Beginners mailing list


End of Beginners Digest, Vol 117, Issue 9

Reply via email to