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.