スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[Haskell] 配列概要

{------------------------------------------------
------------------------------------------------
今回はData.Arrayの使い方についての解説
Data.Arrayはその名の通りHaskellで配列を扱うモジュールです。
注意することはHaskellは関数型言語なのでいちど作った配列は一部分の変更ができないということです。
部分的に配列を変更したいときは新しく部分的に変更した配列を作成しなければなりません。
したがってData.Arrayモジュールは「作成→多数回参照をする」場合に使う道具となります。
状況によってはlistで扱った方が動作が速い場合もあります。

[Data.Arrayの関数群]
以下にData.Arrayで使われている関数を挙げます。
使われる型クラスは[IArray a c][Ix i]です。
詳細は現在まだ理解できていないので理解できたら書きます。
--------------------------------------------------
--------------------------------------------------}
{------------------
配列を作成する関数群
------------------}
array :: (IArray a e, Ix i) => (i, i) -> [(i, e)] -> a i e

listArray :: (IArray a e, Ix i) => (i, i) -> [e] -> a i e

accumArray :: (IArray a e, Ix i) => (e -> e' -> e) -> e -> (i, i) -> [(i, e')] -> a i e

{-----------
配列参照の関数群
------------}
-- indexに対応するelementを返す
(!) :: (IArray a e, Ix i) => a i e -> i -> e

-- 配列の最大、最小を返す
bounds :: (IArray a e, Ix i) => a i e -> (i, i)

-- indexのlistを返す
indices :: (IArray a e, Ix i) => a i e -> [i]

-- elementのリストを返す
elems :: (IArray a e, Ix i) => a i e -> [e]

-- indexとelementのtuppleのlistを返す
assocs :: (IArray a e, Ix i) => a i e -> [(i, e)]

{-----------------------
配列をもとにして新しい配列を作る関数群
------------------------}

-- 部分変更した配列を返す
(//) :: (IArray a e, Ix i) => a i e -> [(i, e)] -> a i e

-- 配列のelemntに対応するindexとelementのリストに変更関数を通した結果を返す
accum :: (IArray a e, Ix i) => (e -> e' -> e) -> a i e -> [(i, e')] -> a i e

-- 実装されていないようです。使うとコンパイルエラーになります
amap :: (IArray a e', IArray a e, Ix i) => (e' -> e) -> a i e' -> a i e

-- それぞれのindexが与える変換関数に対応した要素を抜き出した配列を返す
ixmap :: (IArray a e, Ix i, Ix j) => (i, i) -> (i -> j) -> a j e -> a i e



スポンサーサイト

テーマ : プログラミング
ジャンル : コンピュータ

プロフィール

かみさまみならい

Author:かみさまみならい
FC2ブログへようこそ!

最近の記事
最近のコメント
最近のトラックバック
月別アーカイブ
カテゴリー
ブロとも申請フォーム

この人とブロともになる

ブログ内検索
RSSフィード
リンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。