Haskell帮助:用新变量替换lambda项中的项! (简单的错误需要修复…)

问题描述 投票:1回答:1

我正在尝试编写一个函数,当传递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中的变量替换传递的术语中的所有术语。我的函数适用于...

haskell functional-programming lambda-calculus
1个回答
0
投票

问题是

© www.soinside.com 2019 - 2024. All rights reserved.