什么是Y组合器?
让我们从编写一个简单的递归阶乘函数开始:
( define ( factorial n )
( if ( = n 0 )
1
( * n (factorial ( - n 1 )))))
可以用更明确的样式编写:
( define factorial
( lambda ( n )
( if ( = n 0 )
1
( * n (factorial ( - n 1 ))))))
请注意,在定义阶乘函数时,我们进行了递归调用。 我们将这种定义称为显式递归定义。 您很快就会看到我们所说的隐式递归定义(扰流器:通过非递归方法生成的递归函数)。
目标-消除明确的递归
如果我们被限制进行递归调用,我们仍然可以实现阶乘函数吗? 答案是肯定的,这将使我们直接进入Y-Combinator。
什么是Y组合器?它
评论0
最新资源