|
| 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 |
|
|
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 | | | The list of values in the subrange defined by a bounding pair.
| | | | The position of a subscript in the subrange.
| | | | Like index, but without checking that the value is in range.
| | | | Returns True the given subscript lies in the range defined
the bounding pair.
| | | | The size of the subrange defined by a bounding pair.
| | | | 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) |
|
|
|
|
|
|
|
|
| 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 | |
|
|
|
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 | |
|
|
|
|
|
| :: 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 | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| :: 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 | Source |
|
|
| unsafeAccumArray' :: Ix i => (e -> a -> e) -> e -> (i, i) -> Int -> [(Int, a)] -> Array i e | Source |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| Produced by Haddock version 2.3.0 |