Size: a a a

Kotlin Community

2019 November 25

K

Kopusha in Kotlin Community
ну, сам List должен отработать как обычно, потому что уже вычислен (но он вроде linked list там, так что да...). Есть случаи, когда можно стрельнуть в ногу, если создать lazy seq и вызвать count например, тогда ему придется бежать считать. Это известная проблема: оптимизированный ФП компилятор дико сложно сделать, потому что нужно думать за юзера. А в императивщине дал ему ящик с отвертками — крути сам, я не при делах, что накрутишь, все твоё 🙂.
источник

AN

Alexander Nozik in Kotlin Community
Kopusha
ну, сам List должен отработать как обычно, потому что уже вычислен (но он вроде linked list там, так что да...). Есть случаи, когда можно стрельнуть в ногу, если создать lazy seq и вызвать count например, тогда ему придется бежать считать. Это известная проблема: оптимизированный ФП компилятор дико сложно сделать, потому что нужно думать за юзера. А в императивщине дал ему ящик с отвертками — крути сам, я не при делах, что накрутишь, все твоё 🙂.
Даже не в этом дело. Для простых операций создание итератора - это дорогая операция. В котлин была к примеру стандартная проблема с тем, что (0..9).forEach работало сильно дольше, чем for( i in 0..9), но вроде исправили.
источник

QH

Quantum Harmonizer in Kotlin Community
Bogdan Panchenko
"потому что лист еще не вычесленым" - бинго это называют последлвательностью. А лист вполне понятная сущность
Нет, посмотри, например, LazyList в GreenDao
источник

AM

Andrew Mikhaylov in Kotlin Community
Quantum Harmonizer
Нет, посмотри, например, LazyList в GreenDao
Дай угадаю, там блокирующая операция в геттере?
Ну да, по контракту формально список, всё так.
источник

QH

Quantum Harmonizer in Kotlin Community
Andrew Mikhaylov
Дай угадаю, там блокирующая операция в геттере?
Ну да, по контракту формально список, всё так.
So what? Все драйверы СУБД либо очень новые, либо блокирующие)
источник

AM

Andrew Mikhaylov in Kotlin Community
Quantum Harmonizer
So what? Все драйверы СУБД либо очень новые, либо блокирующие)
Над ними обычно пулинг коннекшнов есть, потому непосредственная операция чтения всё ещё может быть саспендящейся.
Но мы опять с тобой спорим о том, что ты отрицаешь. :)
источник

QH

Quantum Harmonizer in Kotlin Community
Andrew Mikhaylov
Над ними обычно пулинг коннекшнов есть, потому непосредственная операция чтения всё ещё может быть саспендящейся.
Но мы опять с тобой спорим о том, что ты отрицаешь. :)
Ну я просто не вижу смысла работать много часов, чтобы сэкономить пару миллисекунд, да
источник

AO

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

AN

Alexander Nozik in Kotlin Community
Alexey Otts
Итераторы для этого оч хорошо как раз и подходят, никто не мешает на них делать все теже самые функции что и на sequence
Я не с Sequence сравниваю, а с циклом.
источник

BP

Bogdan Panchenko in Kotlin Community
Alexey Otts
Итераторы для этого оч хорошо как раз и подходят, никто не мешает на них делать все теже самые функции что и на sequence
но порой удобней
источник

AO

Alexey Otts in Kotlin Community
Alexander Nozik
Я не с Sequence сравниваю, а с циклом.
А да этого где то циклы обсуждались? Оо
источник

AO

Alexey Otts in Kotlin Community
Bogdan Panchenko
но порой удобней
Не понимать, если две по сути одинаковые вещи, то что в котлине не подвезли всех комбинаторов для итераторов, не делает seq удобнее
источник

BP

Bogdan Panchenko in Kotlin Community
Alexey Otts
Не понимать, если две по сути одинаковые вещи, то что в котлине не подвезли всех комбинаторов для итераторов, не делает seq удобнее
у сиквенса более удобные билдеры и комбинация их с не терминальными функциями.

Можно было сделать было "Нормальный сиквенс" и старый итератор для совместимости с джавой, но имхо это выглядело не очень.

Понятно что основная суть сиквенса - отдать итератор, и это выгляд безтолково, но с точке зрения гибкого апи это вполне ок.  

Можно еще было унасоедоватся итератором от сиквенса 🌚
источник

QH

Quantum Harmonizer in Kotlin Community
Bogdan Panchenko
у сиквенса более удобные билдеры и комбинация их с не терминальными функциями.

Можно было сделать было "Нормальный сиквенс" и старый итератор для совместимости с джавой, но имхо это выглядело не очень.

Понятно что основная суть сиквенса - отдать итератор, и это выгляд безтолково, но с точке зрения гибкого апи это вполне ок.  

Можно еще было унасоедоватся итератором от сиквенса 🌚
«удобные билдеры» — это что?
источник

BP

Bogdan Panchenko in Kotlin Community
Quantum Harmonizer
«удобные билдеры» — это что?
он по факту один, generateSequence
источник

QH

Quantum Harmonizer in Kotlin Community
Bogdan Panchenko
он по факту один, generateSequence
А, он теперь sequence, и есть такой же iterator (так что sequence не нужен).
источник

BP

Bogdan Panchenko in Kotlin Community
Quantum Harmonizer
А, он теперь sequence, и есть такой же iterator (так что sequence не нужен).
нет, я не видел
источник

BP

Bogdan Panchenko in Kotlin Community
iterator {} - есть, а generateIterar - нет
источник

QH

Quantum Harmonizer in Kotlin Community
Bogdan Panchenko
iterator {} - есть, а generateIterar - нет
Так зачем ещё и здесь одной функции два названия?)
источник

BP

Bogdan Panchenko in Kotlin Community
Quantum Harmonizer
Так зачем ещё и здесь одной функции два названия?)
ну первая мне не подходит слишком громоздкая 🌚
источник