如何减少以下lambda表达式(λs.λq.sq q)(λq.q)q?在第一个括号中,q q是表达式(λs.λq.s)的输入,还是表达式(s q q)的一部分?
(λs.λq.sqq)(λq.q)q =(λq.qq)(λq.q)q =(λq.q)(λq.q)q =(λq.q)q = q < / p>
(λs.λq.sq q)(λq.q)q =(λq。(λq’.q’)q q)q =(λq.qq)q = qq
根据我的看法,我会得到两个不同的答案。哪个是正确的?
答案 0 :(得分:0)
(\s.\q.s q q)(\q.q)q
返回
Normal order:
q q
Performed 3 beta-reductions
使用StackExchange网站(例如StackOverflow)的人们经常忽略的一个有价值的领域是标签的信息标签。
特别是对于带有lambda-calculus标签的问题,信息标签会显示
由于许多人问如何通过中间步骤来减少λ表达式,因此请看一下Lambda calculus reduction workbench及其interpreter。
因此,您的问题是输入
,然后单击Do it
还有一个跟踪选项可以查看所有转换
答案 1 :(得分:0)
一般规则是从左开始读取表达式,直到
您到达lambda。就您而言,(λs.λq.s q q)
。然后继续
阅读直到找到下一个术语-参数。在你的
情况1}}。然后剥去λ的外层并更换
带参数的变量名。在您的情况下,(λq.q)
被替换为
s
:
(λq.q)
然后重复该过程。现在,lambda为 (λs.λq.s q q) (λq.q) q
-> (λ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。