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 _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe