One option is to use the pureMD5 package, for example, if you want to calculate the hash of the foo.txt file:
import qualified Data.ByteString.Lazy as LB import Data.Digest.Pure.MD5 main :: IO () main = do fileContent <- LB.readFile "foo.txt" let md5Digest = md5 fileContent print md5Digest
This code prints the same MD5 sum as md5sum foo.txt .
If you prefer single-line, you can use it (the import is the same as above):
LB.readFile "foo.txt" >>= print . md5
source share