λx 有什么不同。 x (λy. y) 和 (λx. x) (λy. y)
What is the difference of λx. x (λy. y) and (λx. x) (λy. y)
Lambda expressions extend as far to the right as possible. For example
λx. x λy. y is the same as λx. x (λy. y), and is not the same as (λx. x) (λy. y).
我看不出有什么区别,在这两种情况下,似乎 (λy.y) 应用于 (λx.x) 减少到 (λy.y),不是吗?
第一种情况的减少是什么?
I cant see the difference, in both cases it seems that (λy. y) is applied to (λx. x) reducing to (λy. y), isnt this the case?
我认为您的意思是写“(λx.x) 应用于 (λy.y)”,而不是相反。 (我们说一个函数被“应用”到它的参数,而不是相反。)
但要回答你的问题——不。公式λx.x λy.y表示 λx.x(λy.y ), 即λx.(x(λy.y));也就是说,它是一个接受参数 x(这是一个函数)的函数,将该参数应用于恒等函数 λy.y,结果returns。
我看到你知道 Python,所以在 Python 术语中:
设identity
为定义为
的函数
def identity(y):
return y
那么λy.y表示identity
.
λx.x(λy.y) 表示
lambda x: x(identity)
因此,例如,(λx.x(λy.y))(λt.3) 是
(lambda x: x(identity))(lambda t: 3)
计算结果为 3
。
(λx.x)(λy。 y) 表示
identity(identity)
正如您所说,减少到 identity
;所以 ((λx.x)(λy.y))(λt.3) 是
(identity(identity))(lambda t: 3)
计算结果为 (lambda t: 3)
。
λx.xλy.y 表示 λx.x(λy.y), not (λx.x)(λy.y).
Lambda expressions extend as far to the right as possible. For example λx. x λy. y is the same as λx. x (λy. y), and is not the same as (λx. x) (λy. y).
我看不出有什么区别,在这两种情况下,似乎 (λy.y) 应用于 (λx.x) 减少到 (λy.y),不是吗?
第一种情况的减少是什么?
I cant see the difference, in both cases it seems that (λy. y) is applied to (λx. x) reducing to (λy. y), isnt this the case?
我认为您的意思是写“(λx.x) 应用于 (λy.y)”,而不是相反。 (我们说一个函数被“应用”到它的参数,而不是相反。)
但要回答你的问题——不。公式λx.x λy.y表示 λx.x(λy.y ), 即λx.(x(λy.y));也就是说,它是一个接受参数 x(这是一个函数)的函数,将该参数应用于恒等函数 λy.y,结果returns。
我看到你知道 Python,所以在 Python 术语中:
设
的函数identity
为定义为def identity(y): return y
那么λy.y表示
identity
.λx.x(λy.y) 表示
lambda x: x(identity)
因此,例如,(λx.x(λy.y))(λt.3) 是
(lambda x: x(identity))(lambda t: 3)
计算结果为
3
。(λx.x)(λy。 y) 表示
identity(identity)
正如您所说,减少到
identity
;所以 ((λx.x)(λy.y))(λt.3) 是(identity(identity))(lambda t: 3)
计算结果为
(lambda t: 3)
。λx.xλy.y 表示 λx.x(λy.y), not (λx.x)(λy.y).