Anonymous
Ivan будет жить. Поприветствуем!
Alexander
Как это?
Все переменные в словаре, на словарь можно сослаться
Anonymous
Cesare Borgia будет жить. Поприветствуем!
Anonymous
@eliascygnus будет жить. Поприветствуем!
A64m
удивительно, но ни на реддите, ни в рассылочках сегодня я не нашел ничего, от чего бы я разрывался от злости. но твиттер не подвел: > When You Should Use Lists in Haskell (Mostly, You Should Not)
Alexander
Ты про эту прекрасную статью? http://www.imn.htwk-leipzig.de/~waldmann/etc/untutorial/list-or-not-list/
A64m
про ее более новую версию https://arxiv.org/pdf/1808.08329.pdf
Alexander
Так нормальная статья вроде
A64m
нет
Alexander
там пишется про то что если вы хотите !! или sort то вам нужен не List
Alexander
экспрессивно но видимо накипело у человека
A64m
это не верно
Alexander
почему?
A64m
потому что использовать !! для получения какой-то n-ой итерации полностью нормально, плохо многократно запрашивать что-то из списка по индексу, но это и ежу понятно, для этого статьи писать не надо также списковый сорт обладает кучей полезных свойств, которые в хаскельной экосистеме заменить просто нечем, например у него хорошая производительность на в основном упорядоченных последовательностях
Alexander
ну в целом логично
Alexander
хотя это уже ближе к низкоуровнему хакингу имхо
A64m
я уж не говорю, что единстенная альтернатива sort в хаскеле - это отдельный полумертвый пакет
A64m
вообще стандартный список одна из немногих вещей в хаскельной экосистеме 1) более-менее доделанных 2) заметно лучше чем аналогичные инструменты в других языках (обычно зоопарк из итераторов и костылей для матчинга и мемоизации)
Dmitry
а что ещё по п.1 не хватает?
Vladislav
Итераторы хоть effectful, а на списках-то не выйдет, нужны всякие кондуиты
Vladislav
Которые уже не такие супер доделанные
A64m
да
A64m
а что ещё по п.1 не хватает?
не все оптимизируется, что уже умеют оптимизировать, некоторых важных утилит нету из коробки (вроде делителя на чанки и композиционного сворачивателя)
Ilya
нет
Он ещё и хаскель преподает
Andrey
потому что некто Александр Вершилов 100 раз говорил, что листы в сабже это скорее не датаструксчи а контрол струкчи и юзать их надо соответственно
Ilya
Я помню экспериментировал с (!!) и обнаружил, что он очень быстрый. Намного более быстрый, чем кажется из его рекурсивного определения
A64m
Я помню экспериментировал с (!!) и обнаружил, что он очень быстрый. Намного более быстрый, чем кажется из его рекурсивного определения
ну, рекурсивное определение фиктивное, на самом деле он через foldr определен, чтоб хорошим консьюмером быть
Alexander
угу
Alexander
но вот цикл из !! будет плохим
Alexander
если реализовать разворачивание списка через length и !!
A64m
вот с эффектами да, проблема, и даже доп.пакетами как следует не решенная, не то что из коробки. может в каком-то более лучшем хаскеле можно было что-то вроде стриминга использовать для всего, в том числе и вместо списков, но гхц не сможет такие стримы соптимизировать до аналогичной спискам производительности в случае Identity "эффекта"
A64m
Ну и понятно, что эта-то проблема с статье вообще не обсуждается
A64m
разумеется, автор заявляет, что списки это такие интераторы и нужно их использовать соотвествующим образом, но не понимает, что они более-менее нормальные итераторы в том числе и потому, что сносные коллекции (итератору в некоторых случаях надо материализовать коллекцию, чтоб не перевычислять заново результаты, для итераторов обычно адовые костыли городят для этого)
Dmitry
угу
А что значит, "контрольная структура"?
Alexander
структура определяющая control flow программы
Alexander
т.е. та по которой происходит выполнение, например список ~ цикл
Alexander
для такой структуры не обязательно а. существование в целом, б. они может быть вычислена не полностью и может быть в любой момент остановка
A64m
но одна из главных причин, почему у меня так бомбануло, это именно подача материала мой любимый отрывок: > At the very top of the page, it presents example code that is supposed to highlight typical features of the language. We see a version of Eratosthenes’ sieve that generates an infinite list of primes. Declarative it certainly is. But see - Lists, numbers. Must be typical Haskell. > Also, that example code features list comprehensions - that’s more syntactic sugar to misguide beginners. And it claims “statically typed code” in the previous line, but - there is no type annotation in the code. Yes, I know, the types are still there, because they are inferred by the compiler, but what do es a beginner think? МЕНЯ АЖ ТРИСЕТ
A64m
А что значит, "контрольная структура"?
контрол-структура оптимизирована для передачи данных между функциями (и соотвественно может материализоваться не полностью, позволяет ранний останов и прочие фичи), в отличие от структур которые оптимизируют футпринт по памяти для хранения полностью материализованной структуры или там оптимизируют поиск
Dmitry
Ага, так понятней
Dmitry
А что, автор той статьи какой-то именитый дядька? Какая разница, что кто-то неправ в интернете?
A64m
нет, но чтоб меня затроллить знаменитым быть не обязательно
Alexander
решето эратосфена кстати крутая задача
Alexander
можно давать джунам, если у них вместо маркерной доски что то нормальное
Ilya
решето эратосфена кстати крутая задача
настолько крутая, что джуны не справятся:) это же баян
Ilya
что решето на хаскеле типа не решето, т.к. слишком медленное
A64m
ладно, мою любимую часть можно еще больше сконцентрировать > it claims “statically typed code” in the previous line, but - there is no type annotation in the code
A64m
это т.н. "решето тернера"
A64m
(на самом деле решето тернера по-другому выглядит, но это тоже так называют)
A64m
твит двухдневной давности, слишком поздно отвечать уже
Cheese
А что значит, "контрольная структура"?
там не контрольная, а control, то есть управляющая
A64m
я смотрю, пол филипс хаскель изучает
A64m
может хоть покритикует хаскель нормально, а то нормальной критики мало
Зигохистоморфный
A64m
основной контрибьютор (бывший) в скалистый компилятор (будующий бывший), широко известный в узких кругах докладами о том, какое скала говно
Зигохистоморфный
Андрей
скала говно, говно имеет право на существование )
Aλexander
Де Гоуз который
Aλexander
Прикольная тенденция
Зигохистоморфный
Aλexander
Slamdata?
Без понятия, что это :)
A64m
Это нормальный подход. если пользуешься чем-то нужно объяснять почему это говно, чтоб исправить ошибки (этого филипс, правда, не добился, но хоть попытался)
A64m
хаскелистам такого здравого отношения к хаскелю обычно очень нехватает
A64m
вообще, завидую скалистому комьюнити, они там так бодро дискутируют, а у хаскелистов один эхочамбер и серклджерк. Разве что раз в полгода стек вс кабал (скоро очередная серия будет, когда снойманиты замену хекеджу выкатят) правда скаладелы на все это плюют, так что вся дискуссия напрасна - вот этому не завидую, конечно
Ilya
Я это пожалуй, в мемориз занесу
Нужно чтобы @A64m_qb0 прямо сказал, что хаскель говно. Тогда можно в мемориз
A64m
так и хаскель говно
Aλexander
Твои мемориз - твои критерии, не спорю
A64m
нашел поиском за три секунды
Alexander
настолько крутая, что джуны не справятся:) это же баян
ну они в школе учили оригинальный алгоритм, а их просят переделать в бесконечный список
Alexander
имхо достаточно просто для джуна все же
A64m
речь о "переделать" или переделать? второе не просто совсем