On Sat, Nov 19, 2005 at 07:58:31PM -0800, Andrew Pimlott wrote: > Here is a version (which came out of that thread) with a nicer type, > that probably also works more reliably (though I won't guarantee it): > > notFollowedBy' :: Show a => GenParser tok st a -> GenParser tok st () > notFollowedBy' p = try $ join $ do a <- try p > return (unexpected (show a)) > <|> > return (return ())
Ok, I almost guarantee it works reliably. I know of no way to make it obvious, but by considering the four cases for p (succeeds consuming 0 tokens, succeeds consuming >0 tokens, fails having consumed 0 tokens, fails having consumerd >0 tokens) should be convincing. When this came up before, Daan suggested committing the change[1], but it seems to have gotten lost. There is also the small issue that changing the type changes the error reporting slighly[2]. Thoughts? Andrew [1] http://www.haskell.org/pipermail/haskell/2004-February/013630.html [2] http://www.haskell.org/pipermail/haskell/2004-February/013631.html _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe