orangy
Sequence
it is evaluating chain lazily, as you described. For Iterable
it makes snapshot for each operation, so list.filter { … }.map { … }
will first create a list of elements matching filter, and then create a new transformed list using map.