Portability | non-portable |
---|---|
Stability | experimental |
Maintainer | Roman Leshchinskiy <rl@cse.unsw.edu.au> |
Generic interface to mutable vectors
- class MVector v a where
- basicLength :: v s a -> Int
- basicUnsafeSlice :: Int -> Int -> v s a -> v s a
- basicOverlaps :: v s a -> v s a -> Bool
- basicUnsafeNew :: PrimMonad m => Int -> m (v (PrimState m) a)
- basicUnsafeNewWith :: PrimMonad m => Int -> a -> m (v (PrimState m) a)
- basicUnsafeRead :: PrimMonad m => v (PrimState m) a -> Int -> m a
- basicUnsafeWrite :: PrimMonad m => v (PrimState m) a -> Int -> a -> m ()
- basicClear :: PrimMonad m => v (PrimState m) a -> m ()
- basicSet :: PrimMonad m => v (PrimState m) a -> a -> m ()
- basicUnsafeCopy :: PrimMonad m => v (PrimState m) a -> v (PrimState m) a -> m ()
- basicUnsafeGrow :: PrimMonad m => v (PrimState m) a -> Int -> m (v (PrimState m) a)
- 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)
- transform :: (PrimMonad m, MVector v a) => (MStream m a -> MStream m a) -> v (PrimState m) a -> m (v (PrimState m) a)
- unstreamR :: (PrimMonad m, MVector v a) => Stream 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)
- 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.
basicLength :: v s a -> IntSource
Length of the mutable vector. This method should not be
called directly, use length
instead.
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 -> BoolSource
basicUnsafeNew :: PrimMonad m => Int -> m (v (PrimState m) a)Source
Create a mutable vector of the given length. This method should not be
called directly, use unsafeNew
instead.
basicUnsafeNewWith :: PrimMonad m => Int -> a -> m (v (PrimState m) a)Source
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.
basicUnsafeRead :: PrimMonad m => v (PrimState m) a -> Int -> m aSource
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 ()Source
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 ()Source
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 ()Source
Set all elements of the vector to the given value. This method should
not be called directly, use set
instead.
Copy a vector. The two vectors may not overlap. This method should not
be called directly, use unsafeCopy
instead.
basicUnsafeGrow :: PrimMonad m => v (PrimState m) a -> Int -> m (v (PrimState m) a)Source
Grow a vector by the given number of elements. This method should not be
called directly, use unsafeGrow
instead.
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) |
Operations on mutable vectors
new :: (PrimMonad m, MVector v a) => Int -> m (v (PrimState m) a)Source
Create a mutable vector of the given length.
newWith :: (PrimMonad m, MVector v a) => Int -> a -> m (v (PrimState m) a)Source
Create a mutable vector of the given length and fill it with an initial value.
read :: (PrimMonad m, MVector v a) => v (PrimState m) a -> Int -> m aSource
Yield the element at the given position.
write :: (PrimMonad m, MVector v a) => v (PrimState m) a -> Int -> a -> m ()Source
Replace the element at the given position.
swap :: (PrimMonad m, MVector v a) => v (PrimState m) a -> Int -> Int -> m ()Source
Swap the elements at the given positions.
clear :: (PrimMonad m, MVector v a) => v (PrimState m) a -> m ()Source
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 :: (PrimMonad m, MVector v a) => v (PrimState m) a -> a -> m ()Source
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 ()Source
Copy a vector. The two vectors must have the same length and may not overlap.
grow :: (PrimMonad m, MVector v a) => v (PrimState m) a -> Int -> m (v (PrimState m) a)Source
Grow a vector by the given number of elements. The number must be positive.
slice :: MVector v a => Int -> Int -> v s a -> v s aSource
Yield a part of the mutable vector without copying it.
Yield a part of the mutable vector without copying it. No bounds checks are performed.
unsafeInit :: MVector v a => v s a -> v s aSource
unsafeTail :: MVector v a => v s a -> v s aSource
Unsafe operations
unsafeNew :: (PrimMonad m, MVector v a) => Int -> m (v (PrimState m) a)Source
Create a mutable vector of the given length. The length is not checked.
unsafeNewWith :: (PrimMonad m, MVector v a) => Int -> a -> m (v (PrimState m) a)Source
Create a mutable vector of the given length and fill it with an initial value. The length is not checked.
unsafeRead :: (PrimMonad m, MVector v a) => v (PrimState m) a -> Int -> m aSource
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 ()Source
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 ()Source
Swap the elements at the given positions. No bounds checks are performed.
Copy a vector. The two vectors must have the same length and may not overlap. This is not checked.
unsafeGrow :: (PrimMonad m, MVector v a) => v (PrimState m) a -> Int -> m (v (PrimState m) a)Source
Grow a vector by the given number of elements. The number must be positive but this is not checked.
Internal operations
transform :: (PrimMonad m, MVector v a) => (MStream m a -> MStream m a) -> v (PrimState m) a -> m (v (PrimState m) a)Source
transformR :: (PrimMonad m, MVector v a) => (MStream m a -> MStream m a) -> v (PrimState m) a -> m (v (PrimState m) a)Source
unsafeAccum :: (PrimMonad m, MVector v a) => (a -> b -> a) -> v (PrimState m) a -> Stream (Int, b) -> m ()Source
accum :: (PrimMonad m, MVector v a) => (a -> b -> a) -> v (PrimState m) a -> Stream (Int, b) -> m ()Source
unstablePartition :: forall m v a. (PrimMonad m, MVector v a) => (a -> Bool) -> v (PrimState m) a -> m IntSource