Ответ
Плюсы:
- Ленивые вычисления - элементы обрабатываются только при необходимости
- Поддержка бесконечных последовательностей
- Экономия памяти - не хранит все элементы сразу
- Цепочка операций (map, filter и т.д.) выполняется за один проход
- Совместимость с Kotlin Flow и Java Streams
Минусы:
- Нет доступа по индексу (не поддерживает RandomAccess)
- Многократные итерации приводят к повторным вычислениям
- Некоторые операции (sorted, toList) материализуют всю последовательность
Пример:
val seq = sequence {
yield(1)
yieldAll(listOf(2, 3))
}
seq.filter { it > 1 } // ленивая операция
.forEach { println(it) } // 2, 3