estoy tratando de aprender el Y-Combinator mejor (tipo de entiendo que en el esquema) y ponerlo en práctica en D 2.0, y yo estoy fallando bastante miserablemente:Y-combinator en D?
auto fact = delegate(uint delegate(uint) recurse)
{
return delegate(uint n)
{
return n > 1 ? n * recurse(n - 1) : 1;
};
};
fact(fact)(5);
Esto no lo hace trabajo, por la razón obvia de que no puedo pasar fact
a fact
(¿cuál sería su tipo?). Y además, todavía necesito el nombre fact
para pasar a sí mismo, por lo que no funcionaría de todos modos, ¿verdad?
Pero ... ¿cómo hago para implementar el Y-combinator en D?
delegados ya son tipos de referencia, puede soltar 'y'. – BCS
@BCS: Buen punto, originalmente era un método y olvidé eliminarlo. Arreglará. :) – Mehrdad