Привет,
Возникла проблема с массивами в haskell
Имею следующий код (ужатый и выхолощенный до минимума, всё ещё содерщего проблему, так что смысла в нём прошу не искать
)
module Main
where
import Data.Array
import Data.Foldable
main :: IO ()
main = print (res arr)
res :: Array Int Int
--res a = Prelude.foldl (+) 0 (elems a)
res = Data.Foldable.foldl (+) 0
arr :: Array Int Int
arr = listArray (0, 100000) (repeat 42)
В таком виде код приводит к
Stack space overflow: current size 8388608 bytes.
Use `+RTS -Ksize' to increase it.
Видимо, рекурсия, не сводимая к хвостовой. Но если поменять определение res на закоментированное, то код отрабатывает успешно.
Вопрос: откуда рекурсия в Data.Foldable.foldl?