lambda 乘法如何工作?
How does lambda multiplication works?
A Tutorial Introduction to the Lambda Calculus
本文介绍乘法函数
The multiplication of two numbers x and y can be computed using the following
function:
(λxyz.x(yz))
The product of 2 by 2 is then:
(λxyz.x(yz))22
which reduces to
(λz.2(2z))
The reader can verify that by further reducing this expression, we can obtain the expected result 4.
我不知道(λz.2(2z))如何减少到4。谁能告诉我这个过程?
lambda函数中的2为λsz.s(s(z)),4为λsz.s(s(s(s(z)))).
您可以通过应用替换来正式获得结果,就像在您引用的注释的前面示例中一样。
开始于:
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
的函数它的论点。
A Tutorial Introduction to the Lambda Calculus
本文介绍乘法函数
The multiplication of two numbers x and y can be computed using the following function:
(λxyz.x(yz))
The product of 2 by 2 is then:
(λxyz.x(yz))22
which reduces to
(λz.2(2z))
The reader can verify that by further reducing this expression, we can obtain the expected result 4.
我不知道(λz.2(2z))如何减少到4。谁能告诉我这个过程?
lambda函数中的2为λsz.s(s(z)),4为λsz.s(s(s(s(z)))).
您可以通过应用替换来正式获得结果,就像在您引用的注释的前面示例中一样。
开始于:
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
的函数它的论点。