ленивые вычисления были во вред решению задачи?
Даже более того, ни разу не было такого, чтобы от ленивого IO была польза
Да, я собирал статистику в мапу и оно сжирало всю память, @jmostovoy подтвердит
Есть практический опыт: приложение обходит сложную древовидную структуру, делая при этом IO, строит какой-то результат по каждой ветке и потом эти результаты объединяет. Строгая версия кода (StrictData, pure $! x) уменьшила память раза в 3. Я даже не пытался вникать в детали, что именно там где накапливается, просто расставлял строгие аннотации из общих соображений и тестировал на время и память.
Лень же очень помогает для ускорения кода. Это не просто абстрактное "не делай что не используешь", а полноценный подход к написанию программы, когда выполняются исключительно необходимые вычисления. Да, из-за этого память течёт нередко, но грамотное использование лени позволяет писать эффективный код без затрат
Обсуждают сегодня