K组合子的不动点

时间:2011-11-05 14:23:03

标签: lambda-calculus fixed-point combinators y-combinator k-combinator

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

因为YKK的固定点:

K(YK) = YK
KI = I
KIe = Ie = e

任何e。但KIe应该等于I

1 个答案:

答案 0 :(得分:4)

您没有从Y-combinator的正确定义开始。它应该是Y := λf.(λx.f (x x)) (λx.f (x x))(请注意x x周围的括号)。 由于lambda-calculus is left-associativef 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