-
Notifications
You must be signed in to change notification settings - Fork 725
Closed
Milestone
Description
(Imported from Trac #531, reported by nzeh on 2009-03-23)
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 eofbecause eof has return type (). This is a request to change the type signature of notFollowedBy to accept a parser with arbitrary return type.
Rationale:
- The return type is ignored anyway.
- The return type has only a loose connection with what part of the input stream the parser consumes.