
On Wed, Dec 31, 2003 at 07:21:54PM -0500, Mark Carroll wrote:
I tried posting this before but, from my point of view, it vanished. My apologies if it's a duplicate.
In http://www.cs.uu.nl/~daan/download/parsec/parsec.html we read,
testOr2 = try (string "(a)") <|> string "(b)"
or an even better version:
testOr3 = do{ try (string "(a"); char ')'; return "(a)" } <|> string "(b)"
Why is the latter better?
testOr3 is a bit better at error reporting, for example: *> parseTest testOr2 "(a" parse error at (line 1, column 1): unexpected "a" expecting "(b)" *> parseTest testOr3 "(a" parse error at (line 1, column 3): unexpected end of input expecting ")" But it still gives silly error messages in some cases: *> parseTest testOr3 "(" parse error at (line 1, column 1): unexpected end of input expecting "(b)" The original testOr1 is better here: *> parseTest testOr1 "(a" parse error at (line 1, column 3): unexpected end of input expecting ")" *> parseTest testOr1 "(" parse error at (line 1, column 2): unexpected end of input expecting "a" or "b" *> parseTest testOr1 "" parse error at (line 1, column 1): unexpected end of input expecting "("
(BTW, I like Parsec. Thanks, Daan. (-:)
I like Parsec too :) Tom -- .signature: Too many levels of symbolic links