Как упоминалось в Почему (sum $ takeWhile (‹10000000 ) [1..]) использовать так много памяти? следующее не взрывает память в ghci :
foldl' (+) 0 $ takeWhile (< 10000000) [1 .. ]
Однако, если я создам файл, содержащий:
import Data.List
longList::[Int]
longList = [1 .. ]
result :: Int
result = foldl' (+) 0 $ takeWhile (< 10000000) longList
main = do
print $ result
и загрузить в ghci, то при запуске программы потребление памяти резко возрастает. Почему это, и что я могу сделать, чтобы исправить программу? Я использую ghc 7.8.3.
[РЕДАКТИРОВАТЬ]
Он не кажется взрывным, если я сначала скомпилирую через ghc Test.hs
. Но если я удалю все файлы .hi
и .o
и загружу в ghci через ghci Test.hs
, то память взорвется.
7.6.3
. Это ошибка компилятора? Также вы можете начать свойghci
с помощьюghci -fobject-code
, как указано здесь. - person Sibi   schedule 19.07.20147.6.3
. Если удалить все файлы.hi
и.o
, а потом загрузить в ghci черезghci Test.hs
программа у вас взрывается? Спасибо - person artella   schedule 19.07.2014ghc Test.hs
, а затем загружу в ghci, он не взорвется - person artella   schedule 19.07.2014ghci
. Я думаю, что лучше проверить эти условия не вghci
. - person Sibi   schedule 19.07.2014