yurko
12/13/2015 - 4:03 PM

enumerator.rb

enumerator.rb

def repeatedly
  Enumerator.new { |a| loop { a << yield } }  
end  

repeatedly {rand 100}.take 5

squares = ->() { Enumerator.new {|y, a=1| loop { y << a**2; a+=1 } }.lazy }
squares[].select { |e| e % 3 == 0 }.first 10