Ruby では、Enumerator::Lazy で、無限リストを遅延処理できる

(1..Float::INFINITY).lazy.map{ |n| n*2 }.first(5)
# => [2, 4, 6, 8, 10]

これをLazyなしだと、先に無限配列を実体化しようとして、フリーズする

(1..Float::INFINITY).map{ |n| n*2 }.first(5)
# => (実行が終わらない...)