# File lib/backports/2.0.0/enumerable/lazy.rb, line 145 def take(n) n = Backports::coerce_to_int(n) raise ArgumentError, 'attempt to take negative size' if n < 0 Lazy.new(n == 0 ? [] : self) do |yielder, *values| data = yielder.backports_memo ||= {:remain => n} yielder.yield(*values) throw @@done if (data[:remain] -= 1) == 0 end.__set_inspect :take, [n], self end