私は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
その型は何でしょうか?)。その上、 の名前を自分自身に渡す必要があるfact
ので、いずれにしても機能しませんよね?
しかし...どうすればDでYコンビネーターを実装できますか?