
22 Nov
2005
22 Nov
'05
10:19 a.m.
Am Dienstag, 22. November 2005 15:58 schrieben Sie:
Hello, I run as follows:
simple::Parser String simple = do manyTill anyToken (semi <|> eof)
run:: Show a => Parser a -> String -> IO()
run p input
= case (parse p "" input) of
Left err -> do {putStr "parse error at " ;print err}
Right x -> print x
ParsecLanguage> :load Test.hs Type checking ERROR "Test.hs":21 - Type error in application *** Expression : semi <|> eof *** Term : semi *** Type : GenParser Char () String *** Does not match : GenParser a b ()
Do you know what happens? Thank you.
Aye, <|> takes two parsers of the same type, so we'd need manyTill anyToken ((semi >> return () ) <|> eof) or manyTill anyToken (semi <|> (eof >> return "dummy String")) Cheers, Daniel