Kotlin разделяет read-only интерфейсы (List) и изменяемые (MutableList); read-only — контракт API, не глубокая иммутабельность.
Разбор
listOf → List; mutableListOf → MutableList.
- Read-only список может быть backed mutable реализацией.
map/filter/flatMap возвращают новые списки (eager).
- Для ленивых цепочек —
asSequence().
Итог
Явно разделяйте mutable и read-only на границах слоёв.