From: Thomas Sawyer Date: 2012-02-14T00:36:10+09:00 Subject: [ruby-core:42556] [ruby-trunk - Feature #4890] Enumerable#lazy Issue #4890 has been updated by Thomas Sawyer. Actually, is there any reason why Enumerator's usual methods themselves aren't lazy? Is it necessary to have both? If they were lazy then the notation would be pretty simple: [1,2,3].each.select{ |e| ... }.map{ |e| .... }.to_a No special method needed, as #each would do the job. ---------------------------------------- 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 (()) (also attached to this ticket) =end -- http://bugs.ruby-lang.org/