0

在阅读这篇关于 Y-combinator 的文章(我强烈推荐)时,我偶然发现了这种转换:

(define Y 
    (lambda (f)
      ((lambda (x) (x x))
       (lambda (x) (f (x x))))))

Note that we can apply the inner lambda expression to its argument to get an equivalent version of Y:

  (define Y 
    (lambda (f)
      ((lambda (x) (f (x x)))
       (lambda (x) (f (x x))))))

有人可以解释一下我们是如何获得第二个版本的 Y 的吗?我们遵循了哪些步骤来实现目标?

4

1 回答 1

1

您正在应用(lambda (x) (x x))(lambda (x) (f (x x)))
执行应用程序以获取(lambda (x) (f (x x))(lambda (x) (f (x x))
注意左 lambda 创建其参数的 2 个副本,即右 lambda。

于 2018-11-28T19:25:40.197 回答