Современные ЦП оптимизированы таким образом, чтобы доступ и изменение одного и того же места в памяти (временная локальность), а также последовательные места в памяти (пространственная локальность) были чрезвычайно быстрыми.
Теперь, поскольку Haskell является чисто неизменным языком, вы, естественно, не можете перезаписывать существующие блоки памяти, что может сделать такие вещи, как foldl
намного медленнее, чем цикл for
с непрерывно доступной переменной результата будет в C.
Предоставляет ли Haskell что-либо внутренне, чтобы уменьшить эту потерю производительности? И вообще, каковы его свойства относительно местности?