関数型プログラミング言語Haskell Part13
■ このスレッドは過去ログ倉庫に格納されています
0860デフォルトの名無しさん
2011/02/13(日) 00:13:11http://www.haskell.org/ghc/docs/latest/html/libraries/base-4.3.0.0/src/GHC-IOArray.html#IOArray によれば
newtype IOArray i e = IOArray (STArray RealWorld i e)
instance Eq (IOArray i e) where
IOArray x == IOArray y = x == y
で、http://www.haskell.org/ghc/docs/latest/html/libraries/base-4.3.0.0/src/GHC-Arr.html#STArray によれば
-- Just pointer equality on mutable arrays:
instance Eq (STArray s i e) where
STArray _ _ _ arr1# == STArray _ _ _ arr2# =
sameMutableArray# arr1# arr2#
なので、 IOArray や STArray を使っているかぎり、(==)は要素の比較のみしてくれるはず。
モナディックにするのがいやなら、配列を生成/変更するときにハッシュ値でも計算してそれを比較するようにするとか。
■ このスレッドは過去ログ倉庫に格納されています