well,i am reading the book :<Programming in haskell >
chapter 8 functional parsers
this chapter try teaching an parser technology,but i have some problem about do keyword
--some brief info of types :
type Parser a = String -> [(a,String)]
item :: Parser Char --item "abc" = [('a',"bc")]
return' :: a -> Parser a --return' 'a' "foo" = [('a',"foo")]
--below code complier notice... sorry format
p2 :: Parser (Char,Char)
p2 = do x <- item
item
y <- item
return' (x,y)
"No instance for (Monad ((-)) String))
arising from a execute statement
Possible fix : add an instance declaration for (Monad ((-)) String))
In a stmt of a 'do' expression : y <- item
In the expression:
do { x <- item; item;
y <- item;
return' (x,y)} In an equation for 'p2':
p2
= do { x <- item;
item;
y <- item;
....}"
thanks for any help
jiangzhen <mail:jiangzhen3s@qq.com>