4 ms·
The strange thing is that the JVM can handle them because Scala and Kotlin have them. Java though, doesn't.
by aembleton 4y ago
The strange thing is that the JVM can handle them because Scala and Kotlin have them. Java though, doesn't.
- aardvark179 4y agoScala 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.