lambda乘法如何工作?

时间:2016-10-15 14:58:21

标签: lambda multiplication reduce

A Tutorial Introduction to the Lambda Calculus

本文介绍乘法函数

  

可以使用以下计算两个数字x和y的乘法   函数:

(λxyz.x(yz))

2乘2的乘积为:

(λxyz.x(yz))22 < / p>

减少到

(λz.2(2z))

读者可以通过进一步减少这个表达式来验证,我们可以得到预期的结果4。

我不知道怎么能(λz.2(2z))减少到4.有人能告诉我这个过程吗?

lambda函数中的2是λsz.s(s(z)),而4是λsz.s(s(s(s(z))))。

1 个答案:

答案 0 :(得分:2)

您可以通过应用替换来正式获得结果,就像您之前引用的注释示例一样。

自:

2 ≡ λsz.s(s(z))

我们首先在(λz.2(2z))中替换它的第二个实例(更改变量名以避免捕获自由变量):

 (λz.2((λxy.x(x(y)))z))

等于(用x代替z):

(λz.2(λy.z(z(y))))

然后我们再次应用2的定义(使用新的变量重命名):

(λz.((λwu.w(w(u)))(λy.z(z(y))))))

等于(用w代替λy.z(z(y))):

(λz.(λu.(((λy.z(z(y)))((λy.z(z(y)))u)))))

现在我们可以在最严格的lambda中重复替换,用y代替u

(λz.(λu.((λy.z(z(y)))(z(z(u))))))

最后我们可以应用最后一次替换,将y替换为z(z(u)

(λz.(λu.z(z(z(z(u))))))

是4。

作为最后的评论,请注意,通过考虑数字 n 是一个带有两个参数的函数,可以确定定义的正确性,该参数应用第一个参数 n 次到第二次。因此,(λz.2(2z))是应用两次函数2z的函数,该函数应用两次z的函数,因此结果是应用四次z的函数它的论点。