Както е споменато в Защо (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