Actually, It's not <|> that's different, it's the string combinator. In Parsec, string matches each character one at a time. If the match fails, any partial input it matched is consumed. In attoparsec, string matches either the entire thing or not, as a single step. If it fails to match, no input is consumed.
Carl On Wed, Mar 2, 2011 at 9:51 AM, Stephen Tetley <stephen.tet...@gmail.com> wrote: > Actually this is stranger than I thought - from testing it seems like > Attoparsec's (<|>) is different to Parsec's. From what I'm seeing > Attoparsec appears to do a full back track for (<|>) regardless of > whether the string lexer is wrapped in try, whereas Parsec needs try > to backtrack. > > On 2 March 2011 16:24, Stephen Tetley <stephen.tet...@gmail.com> wrote: > >> >> *try* means backtrack on failure, and try the next parser. So if you >> want ill formed strings to throw an error if they aren't properly >> enclosed in double quotes don't use try. > > _______________________________________________ > Haskell-Cafe mailing list > Haskell-Cafe@haskell.org > http://www.haskell.org/mailman/listinfo/haskell-cafe > _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe