Ticket #531 (closed enhancement: invalid)
Text.Parsec.Combinators.notFollowedBy too restrictive
|Reported by:||nzeh||Owned by:|
Say, you want to write something like
aParser :: Parser String aParser = many1 $ noneOf "a" <|> ( char 'a' >> notFollowedBy $ string "rrgh" >> return 'a' )
This fails because, according to the type signature of notFollowedBy, since the parser parses a stream characters, the parser given to notFollowedBy must have return type Char, which it doesn't. The same happens for something a little more meaningful such as
nonFinalA :: Parser () nonFinalA = char 'a' >> notFollowedBy eof
because eof has return type (). This is a request to change the type signature of notFollowedBy to accept a parser with arbitrary return type.
- The return type is ignored anyway.
- The return type has only a loose connection with what part of the input stream the parser consumes.