module Array (
module Ix, -- export all of Ix for convenience
Array, array, listArray, (!), bounds, indices, elems, assocs,
accumArray, (//), accum, ixmap ) where
import Ix
infixl 9 !, //
data (Ix a) => Array a b = ... -- Abstract
array :: (Ix a) => (a,a) -> [(a,b)] -> Array a b
listArray :: (Ix a) => (a,a) -> [b] -> Array a b
(!) :: (Ix a) => Array a b -> a -> b
bounds :: (Ix a) => Array a b -> (a,a)
indices :: (Ix a) => Array a b -> [a]
elems :: (Ix a) => Array a b -> [b]
assocs :: (Ix a) => Array a b -> [(a,b)]
accumArray :: (Ix a) => (b -> c -> b) -> b -> (a,a) -> [(a,c)]
-> Array a b
(//) :: (Ix a) => Array a b -> [(a,b)] -> Array a b
accum :: (Ix a) => (b -> c -> b) -> Array a b -> [(a,c)]
-> Array a b
ixmap :: (Ix a, Ix b) => (a,a) -> (a -> b) -> Array b c
-> Array a c
Ein update in einem solchen Array gibt es nicht.
Man kann mit diesen Arrays nur komplett rechnen.
Das ist durchaus bei einigen Matrizenoperationen sinnvoll.
Braucht man updates, muß man in eine Zustandsmonande gehen, siehe mutable arrays im GHC-Report.