Comment by clhodapp

9 hours ago

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?

    • I meant it more in the sense that “you need one or the other” rather than “some cases require one and some other cases require the other”.