Здравствуйте, Tom, Вы писали:
Tom>Сами же ленивые вычисления только добавляют сложности в проекте ибо:
Tom>1. Не известен момент в который будет произведено вычисление
Tom>2. Не известен поток
Tom>3. Не известен call stack
Tom>4. При возникновении ошибки невозможно предсказать поведение системы
Tom>Ну и KISS ленивые вычисления явно нарушают.
то же самое можно сказать о любой высокоуровневой концепции с точки зрения того, кто с нею незнаком. могу напомнить, что в 20-летнем давности руководстве по турбо-паскалю ООП описывался как мутная штука, которой сложно овладеть
Здравствуйте, mrTwister, Вы писали:
T>Здравствуйте, gandjustas, Вы писали:
G>>Это тебя не туда понесло. Ленивость — свойство вычислений, а не типов или экземпляров.
T>Создание экземпляра — это результат вычисления, которое может быть ленивым или энергичным.
Правильно, и это не от типа зависит.
G>>В том что в некоторых адекватных сценариях будет падать, именно из-за энергичности вычислений.
T>Что это за адекватные сценарии?
Рекурсивные конструкции.
fibs = 1:1:zipWith (+) fibs (tail fibs)
G>>Я и говорю что в общем случае, когда ленивость везде. Такое ведет к большему в среднем потреблению ресурсов.
T>С чего это вдруг? Вон, выше по ветке Mystic заметил, что в иногда энергичность может потреблять бесконечное количество ресурсов, где ленивость будет нормально работать.
Это никак не связано с оптимизацией. Есть теорема которая говорит что если выражение может быть вычислено хоть как-то, то оно может быть вычислено ленивым способом.