【发布时间】:2015-06-27 18:45:14
【问题描述】:
我目前正在编写函数,但无法解决第 4 种情况,即:
(E1 E2)[v->E] = E1[v->E] E2[v -> E]
我已经定义了前 3 个(用于常量和变量),但这对我来说有点太棘手了。
但是,函数签名是:
sub :: LExpr -> String -> LExpr -> LExpr
首先我很困惑如何表示参数(E1 E2),然后如何表示E1[v->E] E2[v -> E]-part。我认为++ 在这里不起作用,因为结果必须是 lambda 表达式而不是字符串。
data LExpr 的定义是 Haskell 的“通用”定义,使用 Eq 和 Show。如果需要,我可以提供,但它非常基础,您必须非常熟悉它。
【问题讨论】:
-
请不要犹豫,向我们展示您的代码
标签: function haskell lambda substitution