Это потому, что list.map
- это inline fun
, что может быть потому, что это энергичная операция, которая возвращает новый список.inline fun
может допускать блок suspend
, потому что он больше похож на макрос: он расширяется до места вызова.Пока сайт вызова находится в пределах блока suspend
, это работает нормально. С другой стороны,
sequence.map
является ленивым и просто добавляет еще одну лямбду в конвейер операций, которые будут выполнятьсяв конце концов, когда вы извлекаете элементы из последовательности.
Ближайшим эквивалентом ленивых последовательностей в мире приостановки является канал, но он меняет модель программирования.