K组合器的不动点
K
组合器为 K := (λxy.x)
,定点组合器为 Y := λf.(λx.fxx) (λx.fxx)
。我试图计算YK
:
YK = (λx.Kxx)(λx.Kxx) = (λx.x)(λx.x) = (λx.x) = I
所以因为YK
是K
的固定点:
K(YK) = YK
KI = I
KIe = Ie = e
对于任何e。但是 KIe
应该等于 I
!
The K
combinator is K := (λxy.x)
and the fixed point combinator is Y := λf.(λx.f x x) (λx.f x x)
. I tried to calculate YK
:
YK = (λx.Kxx)(λx.Kxx) = (λx.x)(λx.x) = (λx.x) = I
So because YK
is the fixed point of K
:
K(YK) = YK
KI = I
KIe = Ie = e
for any e. But KIe
should be equal to I
!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您没有从 Y-combinator 的正确定义开始。它应该是
Y := λf.(λx.f (xx)) (λx.f (xx))
(注意x x
两边的括号)。由于 lambda 演算是左结合的,
fx x
是等于(fx) x
,这显然不起作用。使用正确的定义,我们得到
由于 YK 不会简化为 I,因此不允许进行以下替换。
所以,
KI e
很简单You're not starting with the correct definition of the Y-combinator. It should be
Y := λf.(λx.f (x x)) (λx.f (x x))
(note the parentheses aroundx x
).Since lambda-calculus is left-associative,
f x x
is equal to(f x) x
, which obviously doesn't work.Using the correct definition, we get
Since Y K doesn't reduce to I, the following substitution is not allowed.
So,
K I e
is simply