3 ms·
Scala and Kotlin just implement them using a trampoline, the JVM does not itself support tail calls.
by aardvark179 4y ago
Scala and Kotlin just implement them using a trampoline, the JVM does not itself support tail calls.
- aembleton 4y agoHow do they do that? I thought it would need to be done at the JVM level so that stack didn't grow.
- kaba0 4y agoEvery recursion can be converted to code that uses only a single stack. Tail calls can be easily eliminated at compile time automatically as well, that’s why it only needs compile-time support — I don’t specifically know what Scala/etc do, but the mentioned trampoline is basically just a function pointer one can jump to, accumulating results in some non-stack data structure if needed.