программа работает нормально с небольшими файлами,
но завершается с out of memory на файле в 60Мб ->
согласно task manager: в первые 20 сек сжирает всю свободную память ~1,5 Гб,
затем начинает высвобождать до ~30-60 Мб, и через 5 мин завершается с ошибкой.
как исправить такое поведение?
собирается так: ghc --make md5.hs
import qualified Data.Digest.MD5 as MD5
import qualified Data.ByteString.Lazy as B
import Text.Printf
import System.Environment
main = do
(fname:_) <- getArgs
bs <- B.readFile fname
md5 <- hash_MD5 bs
mapM_ (printf "%02x") md5
return ()
hash_MD5 :: B.ByteString -> IO [Int]
hash_MD5 bs = do
let octs = MD5.hash $ map fromIntegral $ B.unpack bs
return $ map fromIntegral octs