Size: a a a

2017 December 07

AP

Aleksei (astynax) Pirogov in Haskell Start
Vasiliy Yorkin
а как же foldl' (flip (:)) []==reverse?
А не надо накапливать список в левой свёртке :)
источник

ZK

Zheka Kozlov in Haskell Start
Кстати, в этом выпуске говорили про foldl' и foldr (в конце): https://bananasandlenses.net/episode011.html
источник

AP

Aleksei (astynax) Pirogov in Haskell Start
Повторюсь, а) обе свёртки обходят источник с головы к хвосту, б) строгие версии свёрток функционально эквивалентны
источник

e

egoarka in Haskell Start
Zheka Kozlov
Кстати, в этом выпуске говорили про foldl' и foldr (в конце): https://bananasandlenses.net/episode011.html
кнопочки бы x1/x1.5/x2 добавить
источник

VY

Vasiliy Yorkin in Haskell Start
Aleksei (astynax) Pirogov
Повторюсь, а) обе свёртки обходят источник с головы к хвосту, б) строгие версии свёрток функционально эквивалентны
понял, да, все так
источник

AP

Aleksei (astynax) Pirogov in Haskell Start
Нужно копить список - используйте правую свёртку. Ленивую :)
источник

VY

Vasiliy Yorkin in Haskell Start
т.е. все равно нужно отдавать предпочтение ленивой свертке, даже если я точно знаю что список конечный (но большой)?
источник

VY

Vasiliy Yorkin in Haskell Start
я думал наоборот
источник

AP

Aleksei (astynax) Pirogov in Haskell Start
Вообще в Haskell очень многое решается с пом. strict data. А функции не должны форсировать вычисление, особенно - ФВП
источник

AP

Aleksei (astynax) Pirogov in Haskell Start
Форсирование вычисления в полиморфной функции - преждевременная оптимизация
источник

AP

Aleksei (astynax) Pirogov in Haskell Start
Всегда ведь можно в комбинирующей функции seq сделать, и свёртка станет энергичнее
источник

VY

Vasiliy Yorkin in Haskell Start
ну да, или $! (или даже deepseq)
источник

AP

Aleksei (astynax) Pirogov in Haskell Start
Не-не! deepseq - очень редко нужен
источник

AP

Aleksei (astynax) Pirogov in Haskell Start
Компилятор - умный, он может многое оптимизировать сам. Если же разработчик приходит и говорит "сделай всё строго", компилятор "умоет руки"
источник

AP

Aleksei (astynax) Pirogov in Haskell Start
Поэтому всё как обычно - делаем наивно, потом, если что, профилируем и тюним (редко надо бывает, на самом деле - в обычных скучный проектах, по крайней мере)
источник

VY

Vasiliy Yorkin in Haskell Start
а, да, в GHC есть же strictness analysis
источник

AP

Aleksei (astynax) Pirogov in Haskell Start
именно
источник

VY

Vasiliy Yorkin in Haskell Start
понял, спасибо!
источник

AP

Aleksei (astynax) Pirogov in Haskell Start
https://www.fpcomplete.com/blog/2017/09/all-about-strictness - вот хорошая статейка по теме недавно мелькала
источник

λO

λeonid Onokhov in Haskell Start
Бонус foldr в том что его можно остановить
источник