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 | <http://www.tetrafoil.com/>