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

Reply via email to