My Enumerable::Lazy patch was accepted into ruby trunk few days ago. So, in ruby 2.0, we can go like this: a = [1,2,3,4,2,5].lazy.map { |x| x * 10 }.select { |x| x > 30 } #=> no evaluation a.to_a #=> [40, 50], evaluation performed - no intermediate arrays generated. Why?Ruby is awesome language, and while being an imperative one, still allows us to write an elegant, functional programming style co