[Haskell-cafe] A simple attoparsec question

Daniel Fischer daniel.is.fischer at googlemail.com
Tue Mar 1 23:06:53 CET 2011


On Tuesday 01 March 2011 22:15:38, Robert Clausecker wrote:
> 
> I hope, you understand my question.

Not sure. If I understand correctly, if you have

someParser = foo
    <|> bar
    <|> parseConstant
    <|> baz
    <|> quux

and invoke someParser on something like

"\"Line\nLine\""

it tries baz and quux but you want it to fail without trying those?
How catastrophic should the failure be?

manyTill (notChar '\n') (char '"' <|> (char '\n' >> error "Newline"))
would be simple but rather extreme. 

Since the point of (<|>) is that the second parser is tried upon failure of 
the first, I don't see how you could avoid that with less drastic measures, 
so you'd have to return a pseudo-success for malformed string literals and 
check for that after someParser.



More information about the Haskell-Cafe mailing list