▲ | adityaathalye 2 days ago | ||||||||||||||||
Yeah, absent automatic TCO, we have to do it all, explicitly, by hand... `recur` and `trampoline`. recur: https://clojuredocs.org/clojure.core/recur
the recursion point to the values of the exprs.
trampoline: https://clojuredocs.org/clojure.core/trampoline
i.e. these emulate TCO, with similar stack consumption properties (they don't implement real TCO).(edit: formatting) | |||||||||||||||||
▲ | skrishnamurthi 2 days ago | parent [-] | ||||||||||||||||
Thanks for the pointers. Trampolining is an old idea for obtaining tail-calls. It's a kind of folk-wisdom that has been rediscovered many times, as the related work here shows: https://dl.acm.org/doi/pdf/10.1145/317636.317779 Usually the trampoline is implemented automatically by the language rather than forcing the author to confront it, though I can see why Clojure might have chosen to put the burden on the user. | |||||||||||||||||
|