A counter-point is that those are the cases that could usually be rewritten as a loop anyway. The cases where tail-calls are indispensible are things like having a long running "server process" that branches on incoming messages and "jumps" to different states by tail calling to the appropriate function. Without tail calls that would have to be obscured behind an explicit model of a state machine or a gigantic monolithic switch statement in a loop, or something, making the code significantly harder to write/read/maintain.
On Mon, Aug 1, 2011 at 7:23 AM, Noel Grandin <noelgran...@gmail.com> wrote: > True, but the 99% case for tail-called functions is where the tail-caller, > and the tail-callee are the same function. > So, sure, we don't have all the power of classical tail calls. But we have > lots of other power to compensate for it :-) > And we can support the majority use-case at the cost of some compiler > complexity. > > Marijn Haverbeke wrote: >> Ah, I see what you mean now. But this kind of rewriting requires >> knowledge of the tail-called function (which may be in another module, >> or passed in by value), and a bunch of extra complexity. It doesn't >> really have the elegance of classical tail calls. > > _______________________________________________ > Rust-dev mailing list > Rust-dev@mozilla.org > https://mail.mozilla.org/listinfo/rust-dev > -- Sebastian Sylvan _______________________________________________ Rust-dev mailing list Rust-dev@mozilla.org https://mail.mozilla.org/listinfo/rust-dev