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

基本上,我想像对Not表达式所做的那样定义And表达式再次调用方法replace的方法。但我在为这两个表达式定义两次替补时可能会遇到麻烦。

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

如果得到And Wright,则整个功能将起作用。 :)有人可以帮忙吗?

谢谢

最佳答案

这应该工作:

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

但是我不确定这是否是您想要的。您还需要substitute做一些实际工作的其他情况。

10-08 08:43