A reasonably performing MD5 implementation in pure Haskell