Meh*_*dad 8 functional-programming d lambda-calculus y-combinator
我试图更好地学习Y-combinator(我在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);
Run Code Online (Sandbox Code Playgroud)
这是不行的,原因很明显,我不能传递fact到fact(将它的类型是什么?).此外,我仍然需要fact传递给自己的名字,所以它无论如何都行不通,对吧?
但是......如何在D中实现Y-combinator呢?