대용량 파일에서 각 문자의 발생 횟수를 계산하고 싶습니다. 하스켈에서 엄격한 방식으로 계산을해야한다는 것을 알고 있지만 (foldl '을 사용하여 달성하려고 시도 했음) 여전히 메모리가 부족합니다. 비교를 위해 파일 크기는 약 2GB이고 컴퓨터에는 100GB의 메모리가 있습니다. 그 파일에 다른 문자가 많지 않습니다. 어쩌면 20. 내가 뭘 잘못하고 있니?대용량 파일의 문자 계산 중 메모리 부족 문제가 발생했습니다.
ins :: [(Char,Int)] -> Char -> [(Char,Int)]
ins [] c = [(c,1)]
ins ((c,i):cs) d
| c == d = (c,i+1):cs
| otherwise = (c,i) : ins cs d
main = do
[file] <- getArgs
txt <- readFile file
print $ foldl' ins [] txt
에 대한 [? 무엇 약한 헤드 정규형 (http://stackoverflow.com/questions/6872898/iskell-what-is-weak head-normal-form) – freestyle
이것은'insmc = Map.insertWith '(+) c (1 :: Int) m' – Michael