|
| 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 |