./ruby/test/closures-scope.rb

download original
#!/usr/bin/ruby




n=10

## stack overflow (p calls itself)
# p=proc{0}

# (0..n).each do |x|
#   p = proc{ x +p.call}
# end




# ## works, but clumsy (because of the "superproc")
# p=proc{0}

# def superproc(x,p)
#   proc{ x +p.call}
# end

# (0..n).each do |x|
#   p = superproc(x,p)
# end

p=proc{0}
(0..n).each do |x|
  pprev = p
  p = proc{ x + pprev.call }
end


print p.call

  
back to test

(C) 1998-2017 Olaf Klischat <olaf.klischat@gmail.com>