我正在尝试编写一个函数,当传递variables VX = [“ v1”,...“ vn”]和Term时,将替换传递中的所有Terms Term分别带有VX的变量]。
例如,我的功能在一定程度上有效
S ((\a. \x. (\y. a c) x b) (\f. \x. x) 0)
它返回
S (V1 V1 0)
而不是它应该返回什么!
S (V1 V2 0)
这是我的功能以及测试。有人可以发现我可能犯的一个错误吗?
termToExpression :: [Var] -> Term -> Expression termToExpression [] a = termToExpr a termToExpression _ (TermVar y) = ExpressionVar y termToExpression (x : _) (TermLambda a b) = ExpressionVar x termToExpression (x : xs) (TermApp n m) = ExpressionApp (termToExpression (x : xs) n) (termToExpression (x : xs) m)
*Main> example2 S ((\a. \x. (\y. a c) x b) (\f. \x. x) 0) *Main> termToExpression ["V1","V2"] example2 S (V1 V1 0)
我正在尝试编写一个函数,当传递的变量VX = [“ v1”,...“ vn”]和一个术语时,将分别用VX中的变量替换传递的术语中的所有术语。我的函数适用于...
问题是