Looking at your code, it's easier not to put the `IO String` computation
of the hash into a tuple, but first compute all hashes:
hashes <- sequence (map Md5s.prefix_md5 filenames)
And if you want the hash and the filename grouped in a tuple:
zip filenames hashes