← Back to context

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 →