我是学习Haskell的初学者。这是使用GHCi时遇到的问题。使用GHCi的Haskell中的函数解析器示例
p :: Parser (Char, Char)
p = do x <- item
item
y <- item
return (x,y)
item :: Parser Char
item = P (\inp -> case inp of
[] -> []
(x:xs) -> [(x,xs)])
产品另一个语法分析器,其中项目::分析器CHAR,简单地产品当我加载文件解析字符串
然后执行
parse p "abcdef"
然后将execption所示:
*** Exception: You must implement (>>=)
解决这个问题的任何想法?
更新信息:
解析器定义如下:
newtype Parser a = P (String -> [(a,String)])
instance Monad Parser where
return :: a -> Parser a
return v = P (\inp -> [(v,inp)])
(>>=) :: Parser a -> (a -> Parser b) -> Parser b
p >>= f = --...
“Parser”是如何定义的?你有没有定义它,或者你期望它是由另一个库定义的,如果是,哪个库? – ErikR 2014-12-07 11:45:24