module Enumerable def lazy_map(&block) Enumerator.new do |yielder| return to_enum(__method__) unless block_given? each do |n| yielder.yield(block.call(n)) end end end end
module Enumerable def lazy_select(&block) Enumerator.new do |yielder| return to_enum(__method__) unless block_given? each do |n| yielder.yield(n) if block.call(n) end end end end