|
GHC.Arr | Portability | non-portable (GHC extensions) | Stability | internal | Maintainer | cvs-ghc@haskell.org |
|
|
|
Description |
GHC's array implementation.
|
|
Synopsis |
|
class Ord a => Ix a where | | | indexError :: Show a => (a, a) -> a -> String -> b | | type IPr = (Int, Int) | | data Ix i => Array i e = Array !i !i !Int (Array# e) | | data STArray s i e = STArray !i !i !Int (MutableArray# s e) | | arrEleBottom :: a | | array :: Ix i => (i, i) -> [(i, e)] -> Array i e | | unsafeArray :: Ix i => (i, i) -> [(Int, e)] -> Array i e | | unsafeArray' :: Ix i => (i, i) -> Int -> [(Int, e)] -> Array i e | | fill :: MutableArray# s e -> (Int, e) -> STRep s a -> STRep s a | | done :: Ix i => i -> i -> Int -> MutableArray# s e -> STRep s (Array i e) | | listArray :: Ix i => (i, i) -> [e] -> Array i e | | (!) :: Ix i => Array i e -> i -> e | | safeRangeSize :: Ix i => (i, i) -> Int | | safeIndex :: Ix i => (i, i) -> Int -> i -> Int | | unsafeAt :: Ix i => Array i e -> Int -> e | | bounds :: Ix i => Array i e -> (i, i) | | numElements :: Ix i => Array i e -> Int | | indices :: Ix i => Array i e -> [i] | | elems :: Ix i => Array i e -> [e] | | assocs :: Ix i => Array i e -> [(i, e)] | | accumArray :: Ix i => (e -> a -> e) -> e -> (i, i) -> [(i, a)] -> Array i e | | unsafeAccumArray :: Ix i => (e -> a -> e) -> e -> (i, i) -> [(Int, a)] -> Array i e | | unsafeAccumArray' :: Ix i => (e -> a -> e) -> e -> (i, i) -> Int -> [(Int, a)] -> Array i e | | adjust :: (e -> a -> e) -> MutableArray# s e -> (Int, a) -> STRep s b -> STRep s b | | (//) :: Ix i => Array i e -> [(i, e)] -> Array i e | | unsafeReplace :: Ix i => Array i e -> [(Int, e)] -> Array i e | | accum :: Ix i => (e -> a -> e) -> Array i e -> [(i, a)] -> Array i e | | unsafeAccum :: Ix i => (e -> a -> e) -> Array i e -> [(Int, a)] -> Array i e | | amap :: Ix i => (a -> b) -> Array i a -> Array i b | | ixmap :: (Ix i, Ix j) => (i, i) -> (i -> j) -> Array j e -> Array i e | | eqArray :: (Ix i, Eq e) => Array i e -> Array i e -> Bool | | cmpArray :: (Ix i, Ord e) => Array i e -> Array i e -> Ordering | | cmpIntArray :: Ord e => Array Int e -> Array Int e -> Ordering | | newSTArray :: Ix i => (i, i) -> e -> ST s (STArray s i e) | | boundsSTArray :: STArray s i e -> (i, i) | | numElementsSTArray :: STArray s i e -> Int | | readSTArray :: Ix i => STArray s i e -> i -> ST s e | | unsafeReadSTArray :: Ix i => STArray s i e -> Int -> ST s e | | writeSTArray :: Ix i => STArray s i e -> i -> e -> ST s () | | unsafeWriteSTArray :: Ix i => STArray s i e -> Int -> e -> ST s () | | freezeSTArray :: Ix i => STArray s i e -> ST s (Array i e) | | unsafeFreezeSTArray :: Ix i => STArray s i e -> ST s (Array i e) | | thawSTArray :: Ix i => Array i e -> ST s (STArray s i e) | | unsafeThawSTArray :: Ix i => Array i e -> ST s (STArray s i e) |
|
|
Documentation |
|
class Ord a => Ix a where |
The Ix class is used to map a contiguous subrange of values in
a type onto integers. It is used primarily for array indexing
(see the array package).
The first argument (l,u) of each of these operations is a pair
specifying the lower and upper bounds of a contiguous subrange of values.
An implementation is entitled to assume the following laws about these
operations:
inRange (l,u) i == elem i (range (l,u)) - range (l,u) !! index (l,u) i == i, when inRange (l,u) i
map (index (l,u)) (range (l,u))) == [0..rangeSize (l,u)-1] rangeSize (l,u) == length (range (l,u))
Minimal complete instance: range, index and inRange.
| | Methods | range :: (a, a) -> [a] | The list of values in the subrange defined by a bounding pair.
| | index :: (a, a) -> a -> Int | The position of a subscript in the subrange.
| | unsafeIndex :: (a, a) -> a -> Int | Like index, but without checking that the value is in range.
| | inRange :: (a, a) -> a -> Bool | Returns True the given subscript lies in the range defined
the bounding pair.
| | rangeSize :: (a, a) -> Int | The size of the subrange defined by a bounding pair.
| | unsafeRangeSize :: (a, a) -> Int | like rangeSize, but without checking that the upper bound is
in range.
|
| | Instances | Ix Bool | Ix Char | Ix Int | Ix Int8 | Ix Int16 | Ix Int32 | Ix Int64 | Ix Integer | Ix Ordering | Ix Word | Ix Word8 | Ix Word16 | Ix Word32 | Ix Word64 | Ix () | Ix IOMode | Ix GeneralCategory | Ix SeekMode | (Ix a, Ix b) => Ix ((,) a b) | (Ix a1, Ix a2, Ix a3) => Ix ((,,) a1 a2 a3) | (Ix a1, Ix a2, Ix a3, Ix a4) => Ix ((,,,) a1 a2 a3 a4) | (Ix a1, Ix a2, Ix a3, Ix a4, Ix a5) => Ix ((,,,,) a1 a2 a3 a4 a5) |
|
|
|
indexError :: Show a => (a, a) -> a -> String -> b |
|
type IPr = (Int, Int) |
|
data Ix i => Array i e |
The type of immutable non-strict (boxed) arrays
with indices in i and elements in e.
The Int is the number of elements in the Array.
| Constructors | Array !i !i !Int (Array# e) | |
| Instances | |
|
|
data STArray s i e |
Mutable, boxed, non-strict arrays in the ST monad. The type
arguments are as follows:
- s: the state variable argument for the ST type
- i: the index type of the array (should be an instance of Ix)
- e: the element type of the array.
| Constructors | STArray !i !i !Int (MutableArray# s e) | |
| Instances | |
|
|
arrEleBottom :: a |
|
array |
:: Ix i | | => (i, i) | a pair of bounds, each of the index type
of the array. These bounds are the lowest and
highest indices in the array, in that order.
For example, a one-origin vector of length
'10' has bounds '(1,10)', and a one-origin '10'
by '10' matrix has bounds '((1,1),(10,10))'.
| -> [(i, e)] | a list of associations of the form
(index, value). Typically, this list will
be expressed as a comprehension. An
association '(i, x)' defines the value of
the array at index i to be x.
| -> Array i e | |
|
|
unsafeArray :: Ix i => (i, i) -> [(Int, e)] -> Array i e |
|
unsafeArray' :: Ix i => (i, i) -> Int -> [(Int, e)] -> Array i e |
|
fill :: MutableArray# s e -> (Int, e) -> STRep s a -> STRep s a |
|
done :: Ix i => i -> i -> Int -> MutableArray# s e -> STRep s (Array i e) |
|
listArray :: Ix i => (i, i) -> [e] -> Array i e |
|
(!) :: Ix i => Array i e -> i -> e |
|
safeRangeSize :: Ix i => (i, i) -> Int |
|
safeIndex :: Ix i => (i, i) -> Int -> i -> Int |
|
unsafeAt :: Ix i => Array i e -> Int -> e |
|
bounds :: Ix i => Array i e -> (i, i) |
|
numElements :: Ix i => Array i e -> Int |
|
indices :: Ix i => Array i e -> [i] |
|
elems :: Ix i => Array i e -> [e] |
|
assocs :: Ix i => Array i e -> [(i, e)] |
|
accumArray |
:: Ix i | | => e -> a -> e | accumulating function
| -> e | initial value
| -> (i, i) | bounds of the array
| -> [(i, a)] | association list
| -> Array i e | |
|
|
unsafeAccumArray :: Ix i => (e -> a -> e) -> e -> (i, i) -> [(Int, a)] -> Array i e |
|
unsafeAccumArray' :: Ix i => (e -> a -> e) -> e -> (i, i) -> Int -> [(Int, a)] -> Array i e |
|
adjust :: (e -> a -> e) -> MutableArray# s e -> (Int, a) -> STRep s b -> STRep s b |
|
(//) :: Ix i => Array i e -> [(i, e)] -> Array i e |
|
unsafeReplace :: Ix i => Array i e -> [(Int, e)] -> Array i e |
|
accum :: Ix i => (e -> a -> e) -> Array i e -> [(i, a)] -> Array i e |
|
unsafeAccum :: Ix i => (e -> a -> e) -> Array i e -> [(Int, a)] -> Array i e |
|
amap :: Ix i => (a -> b) -> Array i a -> Array i b |
|
ixmap :: (Ix i, Ix j) => (i, i) -> (i -> j) -> Array j e -> Array i e |
|
eqArray :: (Ix i, Eq e) => Array i e -> Array i e -> Bool |
|
cmpArray :: (Ix i, Ord e) => Array i e -> Array i e -> Ordering |
|
cmpIntArray :: Ord e => Array Int e -> Array Int e -> Ordering |
|
newSTArray :: Ix i => (i, i) -> e -> ST s (STArray s i e) |
|
boundsSTArray :: STArray s i e -> (i, i) |
|
numElementsSTArray :: STArray s i e -> Int |
|
readSTArray :: Ix i => STArray s i e -> i -> ST s e |
|
unsafeReadSTArray :: Ix i => STArray s i e -> Int -> ST s e |
|
writeSTArray :: Ix i => STArray s i e -> i -> e -> ST s () |
|
unsafeWriteSTArray :: Ix i => STArray s i e -> Int -> e -> ST s () |
|
freezeSTArray :: Ix i => STArray s i e -> ST s (Array i e) |
|
unsafeFreezeSTArray :: Ix i => STArray s i e -> ST s (Array i e) |
|
thawSTArray :: Ix i => Array i e -> ST s (STArray s i e) |
|
unsafeThawSTArray :: Ix i => Array i e -> ST s (STArray s i e) |
|
Produced by Haddock version 2.2.2 |