It's really not that bad. Learn to love the lambda, I say =) unwind = lambda {|x| puts x} (1..9).inject(unwind) do |stack, i| lambda {|x| puts x; stack[i]} end[10] -- Lou.