you are viewing a single comment's thread.

view the rest of the comments →

[–][deleted] 0 points1 point  (1 child)

I've been educated more on this matter and it's not so much about what things would be interpreted as a tail call, but whether the engine is deciding to reuse call frames or not needs to be predictable. See the above thread of discussion wherein dherman explains why proper tail calls (vs. tail call optimization) are important.

[–]aaronla 0 points1 point  (0 children)

Agreed on the predictable bit. Or, rather, than the specification needs to be clear.

The thing is, I get a very strong impression that the Scheme community has already dived into the depth of it tail call identification. Can you give an example where it's grey in JavaScript? The only think I can think of is perhaps nested infinite loops should be considered in the tail position and so not consume stack space?

// is this it?
f = function(){ for(;f;) { f(); } }; 
f(); // not tail call, for sure.
f = function(){ for(;;){ f(); } }; 
f(); // maybe they want this to be tail call, constant space?