Haskell ленивая оценка никогда не будет выполнять больше шагов оценки, чем ожидаемая оценка.
С другой стороны, Scala оценка по названию может потребовать больше шагов оценки, чем позывные (если выгоды от короткого замыкания более чем компенсируется стоимостью повторных вычислений).
Я думал, что вызов по имени примерно эквивалентен ленивой оценке. Почему тогда такая разница во времени гарантируется?
Я предполагаю, что, возможно, язык Haskell указывает, что memoization должна использоваться во время оценки; но в этом случае, почему Scala не делает то же самое?