Size: a a a

Kotlin Community

2019 November 25

AN

Alexander Nozik in Kotlin Community
Ну собственно секвенсы нужны для поточной обработки большых объемов данных. Это довольно специфичная ниша. Кроме того, сейчас их оттуда Flow вытесняет
источник

KG

Kirill Gamazkov in Kotlin Community
Sequence и Flow всё-таки разные вещи, один pull, другой push
источник

KG

Kirill Gamazkov in Kotlin Community
Sequence, в отличие от коллекций, может на каком-то шаге стать бесконечным (с последующим ограничением)
источник

AN

Alexander Nozik in Kotlin Community
Kirill Gamazkov
Sequence и Flow всё-таки разные вещи, один pull, другой push
Sequence - это тоже pull, только не суспендящий
источник

BP

Bogdan Panchenko in Kotlin Community
Boris Vanin
Помню, раньше вся логика сиквенсов была в итераторах. Потом это переделали
и хорошо что так сделали, а то дай этим процедурщикам код писать, все в одном классе/файле нафигачат и рады
источник

KG

Kirill Gamazkov in Kotlin Community
Alexander Nozik
Sequence - это тоже pull, только не суспендящий
Flow - push. Реактивщина же
источник

BP

Bogdan Panchenko in Kotlin Community
Alexander Nozik
Sequence - это тоже pull, только не суспендящий
сиквенс билдер  вполне себе  саспенд функция
источник

AN

Alexander Nozik in Kotlin Community
Kirill Gamazkov
Flow - push. Реактивщина же
Да нет же. Они холодные в основном. Генерятся на запрос. Каналы - push. Flow могут быть тоже push, но это не дефолтное поведение
источник

AN

Alexander Nozik in Kotlin Community
Bogdan Panchenko
сиквенс билдер  вполне себе  саспенд функция
Ну только формально.
источник

AN

Alexander Nozik in Kotlin Community
restricted suspension и все такое
источник

BV

Boris Vanin in Kotlin Community
Alexander Nozik
Ну собственно секвенсы нужны для поточной обработки большых объемов данных. Это довольно специфичная ниша. Кроме того, сейчас их оттуда Flow вытесняет
Нет, если тебе например нужно ленивое выполнение шагов, то ты хоть несколько элементов процессишь, всё равно сиквенс используешь
источник

AN

Alexander Nozik in Kotlin Community
Boris Vanin
Нет, если тебе например нужно ленивое выполнение шагов, то ты хоть несколько элементов процессишь, всё равно сиквенс используешь
Разумеется есть разное применение. Но основное все-таки map+filter+reduce. Секвенсы тут выигрывают на сильно больших данных.
источник

BV

Boris Vanin in Kotlin Community
Alexander Nozik
Разумеется есть разное применение. Но основное все-таки map+filter+reduce. Секвенсы тут выигрывают на сильно больших данных.
Просто придрался к словам 🙈
источник

KG

Kirill Gamazkov in Kotlin Community
Alexander Nozik
Да нет же. Они холодные в основном. Генерятся на запрос. Каналы - push. Flow могут быть тоже push, но это не дефолтное поведение
Озадачен. Надо будет под капот заглянуть. Если, например, через emit выдавать тики таймера
источник

AN

Alexander Nozik in Kotlin Community
Kirill Gamazkov
Озадачен. Надо будет под капот заглянуть. Если, например, через emit выдавать тики таймера
Почитайте товарища Елизарова, там все есть. Билдер flow{} работает по сути так же как sequence{}.
источник

AN

Alexander Nozik in Kotlin Community
Я знаю только два кейса, когда flow идет по push-модели - это callbackFlow и трансвормация из канала (что по сути одно и то же).
источник

BV

Boris Vanin in Kotlin Community
Alexander Nozik
Почитайте товарища Елизарова, там все есть. Билдер flow{} работает по сути так же как sequence{}.
Да, флоу это адвансд сиквенс, жва года его ждал
источник

AN

Alexander Nozik in Kotlin Community
Ну тут опять-таки есть ниши. Flow должен быть все-таки дороже секвенсов и для тривиальной обработки длинющих данных не очень годится.
источник

K

Kopusha in Kotlin Community
sequence в котлине вполне может быть как подпорка, из-за наследия джавы. В clojure вроде все sequence и необходимости в итераторах нет. Если прилетает iterator из либы, он тоже становится sequence. List — имплементация sequence, которая не lazy. Вроде все стройно. В котлине просто дизайн коллекций задним числом фиксится.
источник

AN

Alexander Nozik in Kotlin Community
Kopusha
sequence в котлине вполне может быть как подпорка, из-за наследия джавы. В clojure вроде все sequence и необходимости в итераторах нет. Если прилетает iterator из либы, он тоже становится sequence. List — имплементация sequence, которая не lazy. Вроде все стройно. В котлине просто дизайн коллекций задним числом фиксится.
Подозреваю, что все это дико тормозит
источник