Lazy Operations
All the
sequences and methods we have looked at so far this lesson have been
eager, which means they perform their operations immediately, and
filter
,
map
, and
flatMap
return their results in arrays. But sometimes, we may want to delay operations until they are needed.
Say you have a very large array, and you want to first use
map
and then perform other operations. If done eagerly,
map
will create a new array with the same number of elements as the original one to store its results. But if we do it lazily,
map
will return a
LazyMapSequence
, which will perform each map operation directly when
asked for, without using any intermediate storage.
Infinite sequences must be handled lazily, as they obviously cannot be stored.
Lazy Sequences
A lazy sequence is one that conforms to
LazySequenceProtocol
. The original sequence itself may or may not work lazily internally, but some further operations on
the sequence...