在经历有关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吗?我们要遵循哪些步骤到达那里?
答案 0 :(得分:1)
您正在申请(lambda (x) (x x))(lambda (x) (f (x x)))
进行申请以获取(lambda (x) (f (x x))(lambda (x) (f (x x))
请注意,左侧的lambda创建了其参数的2个副本,即右侧的lambda。