How does a function call itself in a language with no names to call? The Y-combinator: Y = λf.(λx.f(x x))(λx.f(x x)), satisfying Y f = f (Y f) — it is a fixed point of application itself. Feed it a template that expects “the function so far” and it manufactures the recursion out of pure self-application, no name required. It is the deepest fixed point in the batch: not a number a map settles on, but recursion generated from a substrate that has none — the proof that self-reference needs nothing but a function handed to itself.
i13 has recursion natively (def is its built-in Y). The demo shows factorial as the fixed point of a template F(g)(n)=(n≤1)?1:n·g(n−1) — the recursion generated: live demo
“Recursion needs a name to call.” — the Y-combinator makes a function call itself with no name at all, by handing itself to itself. Self-reference from pure application. cited
A function that expects itself, handed itself — and recursion appears out of nothing but application. The fixed point of self-reference. Curry / Church
On the canonical compiler, factorial — the fixed point of its own template — gives fact(5)=120. i13's def is the Y-combinator made native: the recursion is already there: