K
组合子为K := (λxy.x)
,定点组合子为Y := λf.(λx.f x x) (λx.f x x)
。我试着计算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
!
答案 0 :(得分:4)
您没有从Y-combinator的正确定义开始。它应该是Y := λf.(λx.f (x x)) (λx.f (x x))
(请注意x x
周围的括号)。
由于lambda-calculus is left-associative,f x x
等于(f x) x
,这显然不起作用。
使用正确的定义,我们得到
Y K := (λf.(λx.f (x x)) (λx.f (x x))) K (λx.K (x x)) (λx.K (x x)) K ((λx.K (x x)) (λx.K (x x))) K (Y K)
由于Y K没有减少到I,因此不允许进行以下替换。
K (Y K) = Y K
K I = I
所以,K I e
只是
K I e := (K I) e
((λx.λy.x) I) e
(λy.I) e
I