Haskell とメモリ
>関数型言語脳に侵されていると、メモリ効率とかは比較的どうでもいいという考え方になってくる。そういうことは処理系が考えればいいので、プログラマはあんまり気にしなくてよくなる。
>
>のだが、さすがにどうかと気になるところもあって、その辺の話。
>
>
>Crypto
> というライブラリには MD5 値を計算する Data.Digest.MD5 というモジュールがあるのだが、ここで用意されているのは hash ::
>
>こないだの akr さんの発表ではないが、 MD5 値はファイルに対して計算することが多い。たとえば、現在あるディレクトリのなかのファイルの MD5 値を次々に計算していくというプログラムは次のようになるだろう。
>
>import Control.Monad
import Data.Digest.MD5
import System.Directory
import Data.Digest.MD5
import System.Directory
getHash fname =
do flag <- doesDirectoryExist fname
unless flag $ do c <- readFile fname
hash c `seq` return ()
main = do d <- getDirectoryContents "."
mapM_ getHash d
>
Dir.new(".").each do |fname|
unless FileTest.directory?(fname)
dgst = Digest::MD5.new
File.open(fname) do |fio|
buf = ""
dgst << buf while fio.read(256, buf)
end
end
# puts dgst.hexdigest
end
>