久しぶりに
単なるxor式のチェックサム。ビット操作のサンプル程度に。
module FCS where import Bits import Word toHex :: Int -> Char toHex a = "0123456789ABCDEF" !! a strToFCS :: [Char] -> [Char] strToFCS a = toFCS (xors a) where toFCS :: Int -> [Char] toFCS a = [toHex (a `div` 16), toHex (a `mod` 16)] xors :: [Char] -> Int xors [] = 0 xors (c:cs) = word8ToInt( (intToWord8 (ord c)) `xor` (intToWord8 (xors cs)))
Fileのコンストラクタはopenメソッド
http://d.hatena.ne.jp/shinichiro_h/20040611#p1
の、微妙に続いてないような話。
なんでopen中でCreateFileに渡されてるフラグがOPEN_ALWAYSなんじゃい。
どう考えてもOPEN_EXISTINGが正しいだろーに。
結果どうなるかといいますと、存在しないファイルをINモードで開いても、例外出さずに新しくファイル作りやがります。