Comment by lioeters
20 hours ago
I see it, certain algorithms need guaranteed tail-call elimination, otherwise they are too inefficient and must be manually unrolled or rewritten to avoid blowing the stack. So a compiler optimization that is "nice to have" is not good enough.
No algorithm requires tail-call elimination in a general-purpose language with imperative mutability. It's just another way to express iteration.
Sure, but mutual recursion might require `goto` for example. Or an explicit state machine.
I can see how it might require an explicit state machine (keep a mutable state number and switch over the inlined bodies of what could be functions), but I'm not seeing how it could require `goto`.
Are there more-complex relationships that might require it?
1 reply →