From: Glenn Parker Date: 2005-03-17T23:20:23+09:00 Subject: Maximum stack depth It would be useful to have a Ruby command-line option to specify a larger limit on stack depth. I can't find any obvious way, short of manipulating the source, to do this. This came up while I was looking at some of the Ruby snippets at the "Great Computer Language Shootout". The Ackermann benchmark requires very deep recursion, which causes (valid) Ruby code to fail: def ack(m, n) if m == 0 then n + 1 elsif n == 0 then ack(m - 1, 1) else ack(m - 1, ack(m, n - 1)) end end puts ack(3, 10) The "10" in the call to ack(3, 10) is the killer. Actually, anything past ack(3, 6) produces "stack level too deep (SystemStackError)" with 726 levels on WinXP. Other languages handle ack(3, 10) successfully, including interpreters like Python, Perl, and Tcl. Is it just me, or does a stack limited to less than 1000 levels of recursion seem... crippled? Note: rewriting this code to avoid deep recursion (even if you could) is not the point. The benchmark is intended to probe performance related to recursion and function-calling overhead. More details at: http://shootout.alioth.debian.org/benchmark.php?test=ackermann -- Glenn Parker | glenn.parker-AT-comcast.net |