On my second time in HolyJs, this time in the beautiful Saint Petersburg, I spoke about recursion.

I talked about how to think recursively, how a call-stack works, a shadow stack, and what are tail calls, tail call optimisation and proper tail calls.

I also talked a bit about the history and semantics of recursion and how it was first introduced in a programming language, to later, show that we don’t need explicitly recursive functions to implement recursion.

It’s all fun and games until we start to live-code, then things get really hardcore. You can skip to the part in which I implement the Y-Combinator by jumping to 37:03.