人気ブログランキング | 話題のタグを見る

Haskell の多次元配列

Haskell で多次元配列を使うときは、Data.Array モジュールを import する。配列の定義は、

array (配列のインデックスの境界)(インデックスのタプルと値のタプルのリスト)

例えば、

arrayData = array ((1,1),(2,2)) [((1,1),1), ((2,1),2), ((2,2),3), (1,2),4)]

のようにする。Hugs で確かめると次のようになる。インデックスと値のタプルのリストの順序は不定でいいようだ。タプルの総数も合わせなくてもいいが、値の定義されていないインデックスでアクセスするとエラーになる。

HHugs> :load Data.Array
Data.Array> arrayData ! (2,2) where arrayData = array ((1,1),(2,2)) [((1,1),1), ((2,1),2), ((2,2),3), ((1,2), 4)]
3

また、配列を使った九九の表を作るプログラム kuku2.hs は次のようになる。

import Data.Array

kuku = array ((2,2),(9,9)) [((i,j),i*j)| i<-[2..9],j<-[2..9]]

実行例:
Hugs> :e kuku2.hs
Hugs> :l kuku2.hs
Main> kuku ! (2,3)
6
Main> kuku ! (4,7)
28

配列の値をインデックスで取り出すときは、!演算子を使う。

関数型のプログラム言語では、配列の値を変更することはできないから、配列に操作を加えるときは元の配列の値から新しい配列を作ってその値を戻り値で返すことになる。ちょっと面倒だ。

配列に関する詳しい説明はここにあるが、わかりやすいとは言えない。
by tnomura9 | 2009-11-01 23:24 | Haskell | Comments(0)
<< Haskell の多次元配列 ... Haskell でシェルコマン... >>