用您选择的语言编写尽可能少的字符的定点组合器。
- 自由形式(即最短的形式):整个程序,实际功能,代码段
- 如果您有一个标准库,则可能无法使用
- 但是,您可能希望从其他高级函数中提取它,而不是从基础上构造它
请包括将其用作演示的递归阶乘或斐波那契。
在这个问题中,自引用是可以接受的,其目的仅仅是将其从递归函数中删除。
您可以使用所要求的示例之一进行演示的任何实现都可以。
—
JB
如果我没记错的话,严格来说,术语“ Y组合器”专门指Haskell Curry发现的单个定点组合器λf。(λx.f(xx))(λx.f(xx))。
—
乔伊·亚当斯
@Eelvex:到目前为止,显然两个答案(包括OP自己的答案)都使用作弊方式,因此,我认为这样还可以。:-P就个人而言,我宁愿使用@Joey的方法,并说只有真正的(非自我引用)Y组合器才能使用。;-)
—
Chris Jester-Young
@克里斯:天哪。最初我就是这样想的,然后我...一路上忘记了。现在进行更改为时已晚,我们将不得不提出另一个问题。
—
JB
(define Y(lambda(f)(f(Y f))))
吗?)