|
Data.Vector.Generic.Mutable | Portability | non-portable | Stability | experimental | Maintainer | Roman Leshchinskiy <rl@cse.unsw.edu.au> |
|
|
|
|
|
Description |
Generic interface to mutable vectors
|
|
Synopsis |
|
class MVector v a where | | | length :: MVector v a => v s a -> Int | | null :: MVector v a => v s a -> Bool | | slice :: MVector v a => Int -> Int -> v s a -> v s a | | init :: MVector v a => v s a -> v s a | | tail :: MVector v a => v s a -> v s a | | take :: MVector v a => Int -> v s a -> v s a | | drop :: MVector v a => Int -> v s a -> v s a | | unsafeSlice :: MVector v a => Int -> Int -> v s a -> v s a | | unsafeInit :: MVector v a => v s a -> v s a | | unsafeTail :: MVector v a => v s a -> v s a | | unsafeTake :: MVector v a => Int -> v s a -> v s a | | unsafeDrop :: MVector v a => Int -> v s a -> v s a | | overlaps :: MVector v a => v s a -> v s a -> Bool | | new :: (PrimMonad m, MVector v a) => Int -> m (v (PrimState m) a) | | unsafeNew :: (PrimMonad m, MVector v a) => Int -> m (v (PrimState m) a) | | replicate :: (PrimMonad m, MVector v a) => Int -> a -> m (v (PrimState m) a) | | clone :: (PrimMonad m, MVector v a) => v (PrimState m) a -> m (v (PrimState m) a) | | grow :: (PrimMonad m, MVector v a) => v (PrimState m) a -> Int -> m (v (PrimState m) a) | | unsafeGrow :: (PrimMonad m, MVector v a) => v (PrimState m) a -> Int -> m (v (PrimState m) a) | | clear :: (PrimMonad m, MVector v a) => v (PrimState m) a -> m () | | read :: (PrimMonad m, MVector v a) => v (PrimState m) a -> Int -> m a | | write :: (PrimMonad m, MVector v a) => v (PrimState m) a -> Int -> a -> m () | | swap :: (PrimMonad m, MVector v a) => v (PrimState m) a -> Int -> Int -> m () | | unsafeRead :: (PrimMonad m, MVector v a) => v (PrimState m) a -> Int -> m a | | unsafeWrite :: (PrimMonad m, MVector v a) => v (PrimState m) a -> Int -> a -> m () | | unsafeSwap :: (PrimMonad m, MVector v a) => v (PrimState m) a -> Int -> Int -> m () | | set :: (PrimMonad m, MVector v a) => v (PrimState m) a -> a -> m () | | copy :: (PrimMonad m, MVector v a) => v (PrimState m) a -> v (PrimState m) a -> m () | | unsafeCopy :: (PrimMonad m, MVector v a) => v (PrimState m) a -> v (PrimState m) a -> m () | | unstream :: (PrimMonad m, MVector v a) => Stream a -> m (v (PrimState m) a) | | unstreamR :: (PrimMonad m, MVector v a) => Stream a -> m (v (PrimState m) a) | | munstream :: (PrimMonad m, MVector v a) => MStream m a -> m (v (PrimState m) a) | | munstreamR :: (PrimMonad m, MVector v a) => MStream m a -> m (v (PrimState m) a) | | transform :: (PrimMonad m, MVector v a) => (MStream m a -> MStream m a) -> v (PrimState m) a -> m (v (PrimState m) a) | | transformR :: (PrimMonad m, MVector v a) => (MStream m a -> MStream m a) -> v (PrimState m) a -> m (v (PrimState m) a) | | fill :: (PrimMonad m, MVector v a) => v (PrimState m) a -> MStream m a -> m (v (PrimState m) a) | | fillR :: (PrimMonad m, MVector v a) => v (PrimState m) a -> MStream m a -> m (v (PrimState m) a) | | unsafeAccum :: (PrimMonad m, MVector v a) => (a -> b -> a) -> v (PrimState m) a -> Stream (Int, b) -> m () | | accum :: (PrimMonad m, MVector v a) => (a -> b -> a) -> v (PrimState m) a -> Stream (Int, b) -> m () | | unsafeUpdate :: (PrimMonad m, MVector v a) => v (PrimState m) a -> Stream (Int, a) -> m () | | update :: (PrimMonad m, MVector v a) => v (PrimState m) a -> Stream (Int, a) -> m () | | reverse :: (PrimMonad m, MVector v a) => v (PrimState m) a -> m () | | unstablePartition :: forall m v a. (PrimMonad m, MVector v a) => (a -> Bool) -> v (PrimState m) a -> m Int | | unstablePartitionStream :: (PrimMonad m, MVector v a) => (a -> Bool) -> Stream a -> m (v (PrimState m) a, v (PrimState m) a) | | partitionStream :: (PrimMonad m, MVector v a) => (a -> Bool) -> Stream a -> m (v (PrimState m) a, v (PrimState m) a) | | newWith :: (PrimMonad m, MVector v a) => Int -> a -> m (v (PrimState m) a) | | unsafeNewWith :: (PrimMonad m, MVector v a) => Int -> a -> m (v (PrimState m) a) |
|
|
|
Class of mutable vector types
|
|
class MVector v a where |
Class of mutable vectors parametrised with a primitive state token.
| | Methods | basicLength :: v s a -> Int | Length of the mutable vector. This method should not be
called directly, use length instead.
| | basicUnsafeSlice | :: Int | starting index
| -> Int | length of the slice
| -> v s a | | -> v s a | | Yield a part of the mutable vector without copying it. This method
should not be called directly, use unsafeSlice instead.
|
| | basicOverlaps :: v s a -> v s a -> Bool | | basicUnsafeNew :: PrimMonad m => Int -> m (v (PrimState m) a) | Create a mutable vector of the given length. This method should not be
called directly, use unsafeNew instead.
| | basicUnsafeReplicate :: PrimMonad m => Int -> a -> m (v (PrimState m) a) | Create a mutable vector of the given length and fill it with an
initial value. This method should not be called directly, use
replicate instead.
| | basicUnsafeRead :: PrimMonad m => v (PrimState m) a -> Int -> m a | Yield the element at the given position. This method should not be
called directly, use unsafeRead instead.
| | basicUnsafeWrite :: PrimMonad m => v (PrimState m) a -> Int -> a -> m () | Replace the element at the given position. This method should not be
called directly, use unsafeWrite instead.
| | basicClear :: PrimMonad m => v (PrimState m) a -> m () | Reset all elements of the vector to some undefined value, clearing all
references to external objects. This is usually a noop for unboxed
vectors. This method should not be called directly, use clear instead.
| | basicSet :: PrimMonad m => v (PrimState m) a -> a -> m () | Set all elements of the vector to the given value. This method should
not be called directly, use set instead.
| | basicUnsafeCopy | | | basicUnsafeGrow :: PrimMonad m => v (PrimState m) a -> Int -> m (v (PrimState m) a) | Grow a vector by the given number of elements. This method should not be
called directly, use unsafeGrow instead.
| | basicUnsafeNewWith :: PrimMonad m => Int -> a -> m (v (PrimState m) a) | DEPRECATED in favour of basicUnsafeReplicate
|
| | Instances | Prim a => MVector MVector a | | Storable a => MVector MVector a | | MVector MVector Bool | | MVector MVector Char | | MVector MVector Double | | MVector MVector Float | | MVector MVector Int | | MVector MVector Int8 | | MVector MVector Int16 | | MVector MVector Int32 | | MVector MVector Int64 | | MVector MVector Word | | MVector MVector Word8 | | MVector MVector Word16 | | MVector MVector Word32 | | MVector MVector Word64 | | MVector MVector () | | MVector MVector a | | (RealFloat a, Unbox a) => MVector MVector (Complex a) | | (Unbox a, Unbox b) => MVector MVector (a, b) | | (Unbox a, Unbox b, Unbox c) => MVector MVector (a, b, c) | | (Unbox a, Unbox b, Unbox c, Unbox d) => MVector MVector (a, b, c, d) | | (Unbox a, Unbox b, Unbox c, Unbox d, Unbox e) => MVector MVector (a, b, c, d, e) | | (Unbox a, Unbox b, Unbox c, Unbox d, Unbox e, Unbox f) => MVector MVector (a, b, c, d, e, f) | |
|
|
|
Accessors
|
|
Length information
|
|
length :: MVector v a => v s a -> Int |
Length of the mutable vector.
|
|
null :: MVector v a => v s a -> Bool |
Check whether the vector is empty
|
|
Extracting subvectors
|
|
slice :: MVector v a => Int -> Int -> v s a -> v s a |
Yield a part of the mutable vector without copying it.
|
|
init :: MVector v a => v s a -> v s a |
|
tail :: MVector v a => v s a -> v s a |
|
take :: MVector v a => Int -> v s a -> v s a |
|
drop :: MVector v a => Int -> v s a -> v s a |
|
unsafeSlice |
:: MVector v a | | => Int | starting index
| -> Int | length of the slice
| -> v s a | | -> v s a | | Yield a part of the mutable vector without copying it. No bounds checks
are performed.
|
|
|
unsafeInit :: MVector v a => v s a -> v s a |
|
unsafeTail :: MVector v a => v s a -> v s a |
|
unsafeTake :: MVector v a => Int -> v s a -> v s a |
|
unsafeDrop :: MVector v a => Int -> v s a -> v s a |
|
Overlapping
|
|
overlaps :: MVector v a => v s a -> v s a -> Bool |
|
Construction
|
|
Initialisation
|
|
new :: (PrimMonad m, MVector v a) => Int -> m (v (PrimState m) a) |
Create a mutable vector of the given length.
|
|
unsafeNew :: (PrimMonad m, MVector v a) => Int -> m (v (PrimState m) a) |
Create a mutable vector of the given length. The length is not checked.
|
|
replicate :: (PrimMonad m, MVector v a) => Int -> a -> m (v (PrimState m) a) |
Create a mutable vector of the given length (0 if the length is negative)
and fill it with an initial value.
|
|
clone :: (PrimMonad m, MVector v a) => v (PrimState m) a -> m (v (PrimState m) a) |
Create a copy of a mutable vector.
|
|
Growing
|
|
grow :: (PrimMonad m, MVector v a) => v (PrimState m) a -> Int -> m (v (PrimState m) a) |
Grow a vector by the given number of elements. The number must be
positive.
|
|
unsafeGrow :: (PrimMonad m, MVector v a) => v (PrimState m) a -> Int -> m (v (PrimState m) a) |
Grow a vector by the given number of elements. The number must be
positive but this is not checked.
|
|
Restricting memory usage
|
|
clear :: (PrimMonad m, MVector v a) => v (PrimState m) a -> m () |
Reset all elements of the vector to some undefined value, clearing all
references to external objects. This is usually a noop for unboxed vectors.
|
|
Accessing individual elements
|
|
read :: (PrimMonad m, MVector v a) => v (PrimState m) a -> Int -> m a |
Yield the element at the given position.
|
|
write :: (PrimMonad m, MVector v a) => v (PrimState m) a -> Int -> a -> m () |
Replace the element at the given position.
|
|
swap :: (PrimMonad m, MVector v a) => v (PrimState m) a -> Int -> Int -> m () |
Swap the elements at the given positions.
|
|
unsafeRead :: (PrimMonad m, MVector v a) => v (PrimState m) a -> Int -> m a |
Yield the element at the given position. No bounds checks are performed.
|
|
unsafeWrite :: (PrimMonad m, MVector v a) => v (PrimState m) a -> Int -> a -> m () |
Replace the element at the given position. No bounds checks are performed.
|
|
unsafeSwap :: (PrimMonad m, MVector v a) => v (PrimState m) a -> Int -> Int -> m () |
Swap the elements at the given positions. No bounds checks are performed.
|
|
Modifying vectors
|
|
Filling and copying
|
|
set :: (PrimMonad m, MVector v a) => v (PrimState m) a -> a -> m () |
Set all elements of the vector to the given value.
|
|
copy :: (PrimMonad m, MVector v a) => v (PrimState m) a -> v (PrimState m) a -> m () |
Copy a vector. The two vectors must have the same length and may not
overlap.
|
|
unsafeCopy |
:: (PrimMonad m, MVector v a) | | => v (PrimState m) a | target
| -> v (PrimState m) a | source
| -> m () | | Copy a vector. The two vectors must have the same length and may not
overlap. This is not checked.
|
|
|
Internal operations
|
|
unstream :: (PrimMonad m, MVector v a) => Stream a -> m (v (PrimState m) a) |
Create a new mutable vector and fill it with elements from the Stream.
The vector will grow exponentially if the maximum size of the Stream is
unknown.
|
|
unstreamR :: (PrimMonad m, MVector v a) => Stream a -> m (v (PrimState m) a) |
Create a new mutable vector and fill it with elements from the Stream
from right to left. The vector will grow exponentially if the maximum size
of the Stream is unknown.
|
|
munstream :: (PrimMonad m, MVector v a) => MStream m a -> m (v (PrimState m) a) |
Create a new mutable vector and fill it with elements from the monadic
stream. The vector will grow exponentially if the maximum size of the stream
is unknown.
|
|
munstreamR :: (PrimMonad m, MVector v a) => MStream m a -> m (v (PrimState m) a) |
Create a new mutable vector and fill it with elements from the monadic
stream from right to left. The vector will grow exponentially if the maximum
size of the stream is unknown.
|
|
transform :: (PrimMonad m, MVector v a) => (MStream m a -> MStream m a) -> v (PrimState m) a -> m (v (PrimState m) a) |
|
transformR :: (PrimMonad m, MVector v a) => (MStream m a -> MStream m a) -> v (PrimState m) a -> m (v (PrimState m) a) |
|
fill :: (PrimMonad m, MVector v a) => v (PrimState m) a -> MStream m a -> m (v (PrimState m) a) |
|
fillR :: (PrimMonad m, MVector v a) => v (PrimState m) a -> MStream m a -> m (v (PrimState m) a) |
|
unsafeAccum :: (PrimMonad m, MVector v a) => (a -> b -> a) -> v (PrimState m) a -> Stream (Int, b) -> m () |
|
accum :: (PrimMonad m, MVector v a) => (a -> b -> a) -> v (PrimState m) a -> Stream (Int, b) -> m () |
|
unsafeUpdate :: (PrimMonad m, MVector v a) => v (PrimState m) a -> Stream (Int, a) -> m () |
|
update :: (PrimMonad m, MVector v a) => v (PrimState m) a -> Stream (Int, a) -> m () |
|
reverse :: (PrimMonad m, MVector v a) => v (PrimState m) a -> m () |
|
unstablePartition :: forall m v a. (PrimMonad m, MVector v a) => (a -> Bool) -> v (PrimState m) a -> m Int |
|
unstablePartitionStream :: (PrimMonad m, MVector v a) => (a -> Bool) -> Stream a -> m (v (PrimState m) a, v (PrimState m) a) |
|
partitionStream :: (PrimMonad m, MVector v a) => (a -> Bool) -> Stream a -> m (v (PrimState m) a, v (PrimState m) a) |
|
Deprecated operations
|
|
newWith :: (PrimMonad m, MVector v a) => Int -> a -> m (v (PrimState m) a) |
DEPRECATED Use replicate instead
|
|
unsafeNewWith :: (PrimMonad m, MVector v a) => Int -> a -> m (v (PrimState m) a) |
DEPRECATED Use replicate instead
|
|
Produced by Haddock version 2.7.2 |