Issue #4890 has been updated by Innokenty Mikhailov. I've faced problems while trying to push this idea further so I came up with the straight C implementation of ruby code, submitted by Yutaka HARA. Please, see this new PR https://github.com/ruby/ruby/pull/101 ---------------------------------------- Feature #4890: Enumerable#lazy https://bugs.ruby-lang.org/issues/4890 Author: Yutaka HARA Status: Assigned Priority: Normal Assignee: Yutaka HARA Category: core Target version: 2.0.0 =begin = Example Print first 100 primes which are in form of n^2+1 require 'prime' INFINITY = 1.0 / 0 p (1..INFINITY).lazy.map{|n| n**2+1}.select{|m| m.prime?}.take(100) (Example taken from enumerable_lz; thanks @antimon2) = Description Enumerable#lazy returns an instance of Enumerable::Lazy. This is the only method added to the existing bulit-in classes. Lazy is a subclass of Enumerator, which includes Enumerable. So you can call any methods of Enumerable on Lazy, except methods like map, select, etc. are redefined as 'lazy' versions. = Sample implementation ((<URL:https://gist.github.com/1028609>)) (also attached to this ticket) =end -- http://bugs.ruby-lang.org/