Haskellのiterateが便利なので、rubyで書いてみた。

mapを使えばよかったのだろうか。

def iterate(init, &block)
  Enumerator.new do |y|
    loop do
      y << init
      init = block.call(init)
    end
  end
end
p iterate(1, $:succ).take(10)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

便利.標準であるべき.