Y-Combinator的推导

Derivation of the Y-Combinator

article 关于 Y 组合器(我强烈推荐)的过程中,我偶然发现了这个转换:

(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 的第二个版本的吗?我们遵循了哪些步骤?

您正在申请(lambda (x) (x x))(lambda (x) (f (x x)))
申请获得(lambda (x) (f (x x))(lambda (x) (f (x x))
请注意,左侧的 lambda 创建了其参数的 2 个副本,即右侧的 lambda。