Christian Kruse: JS rekursive Aufrufe

Beitrag lesen

Hallo Christian,

Nein. arguments.callee ist inzwischen deprecated, seitdem kann man sowas nur über einen Combinator nachbauen (z.B. einen U combinator):

const U = f => f(f);
const faculty = U(f => x => x === 0 ? 1 : x * U(f)(x - 1));
console.log(faculty(5))

Wenn ich so drüber nachdenke, wäre ein Y combinator besser geeignet:

const U = f => f(f);
const Y = U(h => f => f(x => U(h)(f)(x)));
const faculty = Y(f => x => x === 0 ? 1 :  x * f(x - 1));

console.log(faculty(5));

faculty wird dadurch einfacher verständlich.

Wen die verschieden combinator-Arten interessieren, dem kann ich da nur die Wikipedia ans Herz legen; leider ist die deutsche Variante davon wirklich schlecht 😟

LG,
CK