我尝试更好地学习Y组合器(在Scheme中我有些理解),并在D 2.0中实现它,但失败得相当惨:
auto fact = delegate(uint delegate(uint) recurse)
{
return delegate(uint n)
{
return n > 1 ? n * recurse(n - 1) : 1;
};
};
fact(fact)(5);
很明显这样做是行不通的,因为我无法将 fact
传递给它自己(它的类型会是什么呢?)。此外,我仍然需要 fact
的名称才能将其传递给它本身,所以它也行不通,对吧?
但是... 我该如何在D语言中实现Y组合器呢?
&
。 - BCS