[Date Prev][Date Next][Thread Prev][Thread Next]
- Subject: Re: Proper tail recursion
- From: Roberto Ierusalimschy <roberto@...>
- Date: Fri, 27 Jul 2001 14:40:46 -0300
> It is very easy for a compiler to identify tail calls in a Lua source.
Yes, it is. But as I said before, a tail call will not always executes as a
"proper" tail call, because of C functions.
Again, it is easy for the interpreter to test whether the called function
is C or Lua, and act accordingly. The real problems I see for tail calls in
1 - debugging. Many Lua users do not even know what is a tail call, and
expect to see them in a stack trace.
2 - subtle behaviour. "return f()" is a proper tail call (*if* f is a Lua
function), but "return x, f()" and "f(); return" are not. This can be
quite confusing for programmers assuming proper tail calls.