Re:Bill Clementson's Blog: JavaScript and Lisp
by vlisivka on Saturday December 12, 2009 @07:02AM
(#991435)
arguments.callee is deprecated in javascript 1.4. Use function name instead, so interpreter will have chance to perform tail recursion. Give names to your anonymous functions anyway: it will be much easier to trace them.
Example of anonymous recursive function with arguments.callee:
var factorial=function(n) {
return (!(n>1))? 1 : arguments.callee(n-1)*n;
}
Example of anonymous recursive function without arguments.callee:
var factorial=function factorial(n) {
return (!(n>1))? 1 : factorial(n-1)*n;
}
I'm still surprised I didn't flunk B521 when Dan Friedman put something like this in my Java implementation of a Scheme interpreter and it blew up after some finite number of iterations.
It might have worked if method calls were properly tail-recursive!
https://developer.mozilla.org/En/Core_JavaScript_1.5_Referen...
Example of anonymous recursive function with arguments.callee:
Example of anonymous recursive function without arguments.callee:Result in Firefox: "Too much recursion"
I'm still surprised I didn't flunk B521 when Dan Friedman put something like this in my Java implementation of a Scheme interpreter and it blew up after some finite number of iterations.
It might have worked if method calls were properly tail-recursive!
i would have thought you could say that about functions in any language...