>>52
Personally I'm quite happy to have implicit TCO. It's easy to defeat if you really need to.
But you know what? I'm rooting for you. I'm a much bigger fan of
pragmatic TCO than merely implicit. Not because I'm the slightest bit worried the wrong call may be eliminated, but because (like in
>>54) I would like to communicate to the compiler or interpreter that failing to eliminate a given call is an
error--hey it's probably going to crash anyway, but it's much better to know at compile time, or at the very least be guaranteed to know during testing (say TCO fails, but it doesn't exhaust the stack when called with 5, but does with 6. Or with the same values on different machines. Or implementations. Or the phase of the moon.)
That said, I'm still not phased by having my stack trace look ugly. The program has crashed, things are already ugly. And the tools for dealing with ugly cadavers aren't nearly as bad as advertised. So I'm happy to have implicit TCO wherever available, and explicit TCO wherever required, and so on. Ideally pragma should let you set whatever optimizing profile you like.