def fib
  i = 0
  j = 1
  loop {
    yield i
    i, j = j, i + j
  }
end
g = enum_for(:fib)
30.times{p g.next}