我在编写的函数中定义递归时遇到问题。我不确定这里出什么问题,可能是语法错误。
基本上,我想像对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
做一些实际工作的其他情况。