Haskell中的递归问题 - 一个句法问题?

时间:2012-03-01 14:20:19

标签: haskell recursion syntax-error

我在编写的函数中定义递归时遇到问题。我不确定这里有什么问题,它可能是一种语法错误。

基本上我想要像Not表达式那样定义And表达式再次调用方法替换。但我是havig问题,两个表达式两次定义替代品并且可以采取。

substitute :: Expr -> [(Variable,Expr)] -> Expr
-- ...
substitute (Not e) x = substitute e x
substitute (And e1 e2) x = substitute e1 x substitute e2 x ---- ????? 

如果我得到并且正确,那么整个功能将起作用。 :)有人可以帮忙吗?

由于

2 个答案:

答案 0 :(得分:2)

当您说substitute e1 x substitute e2 x时,您将5个参数传递给左侧的substitute

e1xsubstitutee2x

substitute只需要三个参数。您可能想要执行(substitute e1 x) && (substitute e2 x)之类的操作,但我不确定您希望表达式解析为什么。

答案 1 :(得分:2)

这应该有效:

substitute (Not e) x = Not (substitute e x)
substitute (And e1 e2) x = And (substitute e1 x) (substitute e2 x)

但我不确定这是不是你想要的。你需要一些substitute做一些实际工作的其他案例。