第7行,在_。我不知道可能是什么问题。有小费吗?
term :: Parser Expr
term s1 = case factor s1 of
Just (a, s2) -> case s2 of
'*':s3 -> case term s3 of
Just (b, s4) -> Just (Mul a b, s4)
Nothing -> Just (a, s2)
_ -> Just (a, s2)
Nothing -> Nothing
我正在尝试将字符串解析为Expr(自制数据类型)。我认为这是我们应该怎么做但我无法测试它,因为我无法正确编译它。 GHCI和Ghc墙给了我同样的错误。在该特定点解析错误。
我的代码比这大,但这是相关的代码。
编辑:代码发布在这里,抱歉。
答案 0 :(得分:5)
这是一个语法问题。 Haskell使用二维语法,因此case语句的每个部分都应该有相同的缩进。
所以,要修复错误移动第7行,剩下两个字符
term :: Parser Expr
term s1 = case factor s1 of
Just (a, s2) -> case s2 of
'*':s3 -> case term s3 of
Just (b, s4) -> Just (Mul a b, s4)
Nothing -> Just (a, s2)
_ -> Just (a, s2)
Nothing -> Nothing