为什么不能像定义中那样实现定点组合器?

我正在尝试像 Curry 定义的那样实现 Y 组合器。

此代码不起作用。它会导致无限递归。

F = (lambda f: (lambda x: (1 if x == 0 else (x * (f(x-1))))))    
Y = (
    lambda f: 
    (lambda x: f(x(x)))
    (lambda x: f(x(x)))
)
Y(F)(3)

但是,这个确实有效:

Y = (
    lambda f: 
    (lambda x: f(
        lambda v: x(x)(v)
    ))
    (lambda x: f(
        lambda v: x(x)(v)
    ))
)
Y(F)(3)

为什么第一个不起作用,而第二个起作用?

以上是为什么不能像定义中那样实现定点组合器?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>