Y组合器的派生

时间:2018-11-28 19:18:37

标签: lambda-calculus y-combinator

在经历有关Y组合器的article(我强烈建议)时,我偶然发现了这种转换:

(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吗?我们要遵循哪些步骤到达那里?

1 个答案:

答案 0 :(得分:1)

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