Safe Haskell | None |
---|---|

Language | Haskell2010 |

# WARNING

This module is considered **internal**.

The Package Versioning Policy **does not apply**.

The contents of this module may change **in any way whatsoever**
and **without any warning** between minor versions of this package.

Authors importing this module are expected to track development closely.

# Description

Zero based arrays.

Note that no bounds checking are performed.

## Synopsis

- data Array a
- data MArray s a
- new :: Int -> a -> ST s (MArray s a)
- new_ :: Int -> ST s (MArray s a)
- singleton :: a -> Array a
- singletonM :: a -> ST s (Array a)
- pair :: a -> a -> Array a
- length :: Array a -> Int
- lengthM :: MArray s a -> Int
- read :: MArray s a -> Int -> ST s a
- write :: MArray s a -> Int -> a -> ST s ()
- index :: Array a -> Int -> a
- indexM :: Array a -> Int -> ST s a
- index# :: Array a -> Int -> (#a#)
- update :: Array e -> Int -> e -> Array e
- updateWith' :: Array e -> Int -> (e -> e) -> Array e
- unsafeUpdateM :: Array e -> Int -> e -> ST s ()
- insert :: Array e -> Int -> e -> Array e
- insertM :: Array e -> Int -> e -> ST s (Array e)
- delete :: Array e -> Int -> Array e
- sameArray1 :: (a -> b -> Bool) -> Array a -> Array b -> Bool
- trim :: MArray s a -> Int -> ST s (Array a)
- unsafeFreeze :: MArray s a -> ST s (Array a)
- unsafeThaw :: Array a -> ST s (MArray s a)
- unsafeSameArray :: Array a -> Array b -> Bool
- run :: (forall s. ST s (MArray s e)) -> Array e
- copy :: Array e -> Int -> MArray s e -> Int -> Int -> ST s ()
- copyM :: MArray s e -> Int -> MArray s e -> Int -> Int -> ST s ()
- foldl :: (b -> a -> b) -> b -> Array a -> b
- foldl' :: (b -> a -> b) -> b -> Array a -> b
- foldr :: (a -> b -> b) -> b -> Array a -> b
- foldr' :: (a -> b -> b) -> b -> Array a -> b
- foldMap :: Monoid m => (a -> m) -> Array a -> m
- all :: (a -> Bool) -> Array a -> Bool
- thaw :: Array e -> Int -> Int -> ST s (MArray s e)
- map :: (a -> b) -> Array a -> Array b
- map' :: (a -> b) -> Array a -> Array b
- traverse :: Applicative f => (a -> f b) -> Array a -> f (Array b)
- traverse' :: Applicative f => (a -> f b) -> Array a -> f (Array b)
- toList :: Array a -> [a]
- fromList :: Int -> [a] -> Array a

# Documentation

# Creation

new :: Int -> a -> ST s (MArray s a) Source #

Create a new mutable array of specified size, in the specified state thread, with each element containing the specified initial value.

singletonM :: a -> ST s (Array a) Source #

# Basic interface

update :: Array e -> Int -> e -> Array e Source #

*O(n)* Update the element at the given position in this array.

updateWith' :: Array e -> Int -> (e -> e) -> Array e Source #

*O(n)* Update the element at the given positio in this array, by
applying a function to it. Evaluates the element to WHNF before
inserting it into the array.

unsafeUpdateM :: Array e -> Int -> e -> ST s () Source #

*O(1)* Update the element at the given position in this array,
without copying.

insert :: Array e -> Int -> e -> Array e Source #

*O(n)* Insert an element at the given position in this array,
increasing its size by one.

insertM :: Array e -> Int -> e -> ST s (Array e) Source #

*O(n)* Insert an element at the given position in this array,
increasing its size by one.

delete :: Array e -> Int -> Array e Source #

*O(n)* Delete an element at the given position in this array,
decreasing its size by one.

trim :: MArray s a -> Int -> ST s (Array a) Source #

Create a new array of the `n`

first elements of `mary`

.

copy :: Array e -> Int -> MArray s e -> Int -> Int -> ST s () Source #

Unsafely copy the elements of an array. Array bounds are not checked.

copyM :: MArray s e -> Int -> MArray s e -> Int -> Int -> ST s () Source #

Unsafely copy the elements of an array. Array bounds are not checked.