|
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 | | overlaps :: MVector v a => v s a -> v s a -> Bool | | new :: (PrimMonad m, MVector v a) => Int -> m (v (PrimState m) a) | | newWith :: (PrimMonad m, MVector v a) => Int -> a -> m (v (PrimState m) a) | | 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 () | | clear :: (PrimMonad m, MVector v a) => v (PrimState m) a -> 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 () | | grow :: (PrimMonad m, MVector v a) => v (PrimState m) a -> Int -> m (v (PrimState m) a) | | slice :: MVector v a => Int -> Int -> 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 | | init :: MVector v a => v s a -> v s a | | tail :: MVector v a => 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 | | unsafeNew :: (PrimMonad m, MVector v a) => Int -> m (v (PrimState m) a) | | unsafeNewWith :: (PrimMonad m, MVector v a) => Int -> a -> m (v (PrimState m) a) | | 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 () | | unsafeCopy :: (PrimMonad m, MVector v a) => v (PrimState m) a -> v (PrimState m) a -> m () | | unsafeGrow :: (PrimMonad m, MVector v a) => v (PrimState m) a -> Int -> m (v (PrimState m) a) | | 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) |
|
|
|
Class of mutable vector types
|
|
|
Class of mutable vectors parametrised with a primitive state token.
| | Methods | | Length of the mutable vector. This method should not be
called directly, use length instead.
| | | :: | | => 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.
|
| | | | | Create a mutable vector of the given length. This method should not be
called directly, use unsafeNew instead.
| | | Create a mutable vector of the given length and fill it with an
initial value. This method should not be called directly, use
unsafeNewWith instead.
| | | Yield the element at the given position. This method should not be
called directly, use unsafeRead instead.
| | | Replace the element at the given position. This method should not be
called directly, use unsafeWrite instead.
| | | 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.
| | | Set all elements of the vector to the given value. This method should
not be called directly, use set instead.
| | | | | | Grow a vector by the given number of elements. This method should not be
called directly, use unsafeGrow instead.
|
| | Instances | Prim a => MVector MVector a | Storable a => MVector MVector a | MVector MVector Bool | MVector MVector Bool | MVector MVector Char | MVector MVector Char | MVector MVector Double | MVector MVector Double | MVector MVector Float | MVector MVector Float | MVector MVector Int | MVector MVector Int | MVector MVector Int8 | MVector MVector Int8 | MVector MVector Int16 | MVector MVector Int16 | MVector MVector Int32 | MVector MVector Int32 | MVector MVector Int64 | MVector MVector Int64 | MVector MVector Word | MVector MVector Word | MVector MVector Word8 | MVector MVector Word8 | MVector MVector Word16 | MVector MVector Word16 | MVector MVector Word32 | MVector MVector Word32 | MVector MVector Word64 | MVector MVector Word64 | MVector MVector () | MVector MVector () | MVector MVector a | (RealFloat a, Unbox a) => MVector MVector (Complex a) | (RealFloat a, Unbox a) => MVector MVector (Complex a) | (Unbox a, Unbox b) => MVector MVector ((,) a b) | (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) => 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) => 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) => 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) | (Unbox a, Unbox b, Unbox c, Unbox d, Unbox e, Unbox f) => MVector MVector ((,,,,,) a b c d e f) |
|
|
|
Operations on mutable vectors
|
|
|
Length of the mutable vector.
|
|
|
|
|
Create a mutable vector of the given length.
|
|
|
Create a mutable vector of the given length and fill it with an
initial value.
|
|
|
Yield the element at the given position.
|
|
|
Replace the element at the given position.
|
|
|
Swap the elements at the given positions.
|
|
|
Reset all elements of the vector to some undefined value, clearing all
references to external objects. This is usually a noop for unboxed vectors.
|
|
|
Set all elements of the vector to the given value.
|
|
|
Copy a vector. The two vectors must have the same length and may not
overlap.
|
|
|
Grow a vector by the given number of elements. The number must be
positive.
|
|
|
Yield a part of the mutable vector without copying it.
|
|
|
|
|
|
|
|
|
|
|
:: 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.
|
|
|
|
|
|
|
Unsafe operations
|
|
|
Create a mutable vector of the given length. The length is not checked.
|
|
|
Create a mutable vector of the given length and fill it with an
initial value. The length is not checked.
|
|
|
Yield the element at the given position. No bounds checks are performed.
|
|
|
Replace the element at the given position. No bounds checks are performed.
|
|
|
Swap the elements at the given positions. No bounds checks are performed.
|
|
|
:: (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.
|
|
|
|
Grow a vector by the given number of elements. The number must be
positive but this is not checked.
|
|
Internal operations
|
|
|
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.
|
|
|
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.
|
|
|
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.
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Produced by Haddock version 2.4.2 |