In programming language terms, “laziness” refers to code whose evaluation is delayed until the last possible moment. This strategy can have several benefits. For example: nums = (1..1_000_000).lazy squares = nums.map { |x| x * x } squares.take_while { |x| x < 100 }.to_a #=> [1, 4, 9, 16, 25, 36, 49, 64, 81]In this (contrived) example, since we're using a lazy enumerator, we never actually calculat