エンジニアのソフトウェア的愛情

または私は如何にして心配するのを止めてプログラムを・愛する・ようになったか

IOArray

Haskellで使う配列。Arrayもあるけれど、効率が悪い(らしい)のでIOArrayを使ってみる。ghciにて。

Prelude> :m Data.Array.IO

IOArrayを使うためにData.Array.IOを読み込み。

Prelude Data.Array.IO> a <- newArray (0,7) 0 :: IO (IOUArray Int Int)
Prelude Data.Array.IO> :t a
a :: IOUArray Int Int

newArrayで新しい配列を作る。インデクスの範囲は0から7まで、初期値は0。型を指定してやらないとならないのはなぜか、IOUArrayとはなにか、とか、いろいろわかってない。

Prelude Data.Array.IO> (readArray a 0) >>= print
0

インデクス0の値は0。配列を作ったときに指定した初期値。

Prelude Data.Array.IO> writeArray a 0 10

インデクス0の値を変更。

Prelude Data.Array.IO> (readArray a 0) >>= print
10

値が変わっていることを確認。

形が分かっただけで、まだ「使う」レベルに至っていないや。

2007/06/02 追記

newArrayで指定する型はIO (IOArray Int Int)でいいらしい。参考にした情報を鵜呑みにしたのがまずかった。ますますもって、IOUArrayって、なに?