【问题标题】:Lambda expression reduction exampleLambda 表达式缩减示例
【发布时间】:2018-10-31 03:12:38
【问题描述】:

如何减少以下 lambda 表达式 (λs.λq.s q q)(λq.q)q?在第一个括号中,q q 是表达式 (λs.λq.s) 的输入还是表达式 (s q q) 的一部分?

(λs.λq.s q q)(λq.q)q = (λq.qq)(λq.q)q = (λq.q)(λq.q)q = (λq.q)q = q

(λs.λq.s q q)(λq.q)q = (λq.(λq'.q') q q)q = (λq.qq)q = qq

根据我的看法,我会得到两个不同的答案。哪一个是正确的?

【问题讨论】:

标签: lambda lambda-calculus


【解决方案1】:

一般规则是从左开始读取表达式,直到 你到达一个lambda。在你的情况下(λs.λq.s q q)。然后继续 阅读直到你找到下一个术语——论点。在你的 案例(λq.q)。然后剥掉lambda的外层并更换 带参数的变量名。在您的情况下,s 被替换为 (λq.q):

   (λs.λq.s q q) (λq.q) q
-> (λq.(λq.q) q q) q

然后重复这个过程。现在 lambda 是 (λq.(λq.q) q q) 和 参数是q:

   (λq.(λq.q) q q) q
-> (λq.q) q q

q 的数量令人困惑,但规则微不足道。重复 再次处理:

   (λq.q) q q
-> q q

现在没有什么可以从表达式中剥离出来了,所以你是 完毕。您可以使用交互式解释器自己尝试 this page.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-10
    • 1970-01-01
    • 2016-07-27
    • 2010-09-25
    • 1970-01-01
    • 2016-02-10
    • 1970-01-01
    相关资源
    最近更新 更多