【发布时间】:2011-08-04 07:44:25
【问题描述】:
我正在尝试更好地学习 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);
这不起作用,原因很明显,我不能将fact 传递给fact(它的类型是什么?)。而且,我还需要fact 的名字才能传递给它自己,所以它无论如何也行不通,对吧?
但是...我该如何在 D 中实现 Y 组合器?
【问题讨论】:
-
委托已经是引用类型,你可以放弃
&。 -
@BCS:很好,它最初是一种方法,但我忘了删除它。会修复。 :)
标签: functional-programming d lambda-calculus y-combinator