Я пытаюсь лучше изучить 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
передавалось самому себе, так что это все равно не сработает, верно?
Но... как мне реализовать Y-комбинатор в D?
&
. - person BCS   schedule 04.08.2011