vector-0.6.0.1: Efficient ArraysSource codeContentsIndex
Data.Vector.Unboxed.Mutable
Portabilitynon-portable
Stabilityexperimental
MaintainerRoman Leshchinskiy <rl@cse.unsw.edu.au>
Contents
Mutable vectors of primitive types
Operations on mutable vectors
Unsafe operations
Description
Mutable adaptive unboxed vectors
Synopsis
data family MVector s a
type IOVector = MVector RealWorld
type STVector s = MVector s
class (Vector Vector a, MVector MVector a) => Unbox a
length :: Unbox a => MVector s a -> Int
overlaps :: Unbox a => MVector s a -> MVector s a -> Bool
slice :: Unbox a => Int -> Int -> MVector s a -> MVector s a
new :: (PrimMonad m, Unbox a) => Int -> m (MVector (PrimState m) a)
newWith :: (PrimMonad m, Unbox a) => Int -> a -> m (MVector (PrimState m) a)
read :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> Int -> m a
write :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> Int -> a -> m ()
swap :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> Int -> Int -> m ()
clear :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> m ()
set :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> a -> m ()
copy :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> MVector (PrimState m) a -> m ()
grow :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> Int -> m (MVector (PrimState m) a)
zip :: (Unbox a, Unbox b) => MVector s a -> MVector s b -> MVector s (a, b)
zip3 :: (Unbox a, Unbox b, Unbox c) => MVector s a -> MVector s b -> MVector s c -> MVector s (a, b, c)
zip4 :: (Unbox a, Unbox b, Unbox c, Unbox d) => MVector s a -> MVector s b -> MVector s c -> MVector s d -> MVector s (a, b, c, d)
zip5 :: (Unbox a, Unbox b, Unbox c, Unbox d, Unbox e) => MVector s a -> MVector s b -> MVector s c -> MVector s d -> MVector s e -> MVector s (a, b, c, d, e)
zip6 :: (Unbox a, Unbox b, Unbox c, Unbox d, Unbox e, Unbox f) => MVector s a -> MVector s b -> MVector s c -> MVector s d -> MVector s e -> MVector s f -> MVector s (a, b, c, d, e, f)
unzip :: (Unbox a, Unbox b) => MVector s (a, b) -> (MVector s a, MVector s b)
unzip3 :: (Unbox a, Unbox b, Unbox c) => MVector s (a, b, c) -> (MVector s a, MVector s b, MVector s c)
unzip4 :: (Unbox a, Unbox b, Unbox c, Unbox d) => MVector s (a, b, c, d) -> (MVector s a, MVector s b, MVector s c, MVector s d)
unzip5 :: (Unbox a, Unbox b, Unbox c, Unbox d, Unbox e) => MVector s (a, b, c, d, e) -> (MVector s a, MVector s b, MVector s c, MVector s d, MVector s e)
unzip6 :: (Unbox a, Unbox b, Unbox c, Unbox d, Unbox e, Unbox f) => MVector s (a, b, c, d, e, f) -> (MVector s a, MVector s b, MVector s c, MVector s d, MVector s e, MVector s f)
unsafeSlice :: Unbox a => Int -> Int -> MVector s a -> MVector s a
unsafeNew :: (PrimMonad m, Unbox a) => Int -> m (MVector (PrimState m) a)
unsafeNewWith :: (PrimMonad m, Unbox a) => Int -> a -> m (MVector (PrimState m) a)
unsafeRead :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> Int -> m a
unsafeWrite :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> Int -> a -> m ()
unsafeSwap :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> Int -> Int -> m ()
unsafeCopy :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> MVector (PrimState m) a -> m ()
unsafeGrow :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> Int -> m (MVector (PrimState m) a)
Mutable vectors of primitive types
data family MVector s a Source
type IOVector = MVector RealWorldSource
type STVector s = MVector sSource
class (Vector Vector a, MVector MVector a) => Unbox a Source
Operations on mutable vectors
length :: Unbox a => MVector s a -> IntSource
Length of the mutable vector.
overlaps :: Unbox a => MVector s a -> MVector s a -> BoolSource
slice :: Unbox a => Int -> Int -> MVector s a -> MVector s aSource
Yield a part of the mutable vector without copying it.
new :: (PrimMonad m, Unbox a) => Int -> m (MVector (PrimState m) a)Source
Create a mutable vector of the given length.
newWith :: (PrimMonad m, Unbox a) => Int -> a -> m (MVector (PrimState m) a)Source
Create a mutable vector of the given length and fill it with an initial value.
read :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> Int -> m aSource
Yield the element at the given position.
write :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> Int -> a -> m ()Source
Replace the element at the given position.
swap :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> Int -> Int -> m ()Source
Swap the elements at the given positions.
clear :: (PrimMonad m, Unbox a) => MVector (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, Unbox a) => MVector (PrimState m) a -> a -> m ()Source
Set all elements of the vector to the given value.
copy :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> MVector (PrimState m) a -> m ()Source
Copy a vector. The two vectors must have the same length and may not overlap.
grow :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> Int -> m (MVector (PrimState m) a)Source
Grow a vector by the given number of elements. The number must be positive.
zip :: (Unbox a, Unbox b) => MVector s a -> MVector s b -> MVector s (a, b)Source
O(1) Zip 2 vectors
zip3 :: (Unbox a, Unbox b, Unbox c) => MVector s a -> MVector s b -> MVector s c -> MVector s (a, b, c)Source
O(1) Zip 3 vectors
zip4 :: (Unbox a, Unbox b, Unbox c, Unbox d) => MVector s a -> MVector s b -> MVector s c -> MVector s d -> MVector s (a, b, c, d)Source
O(1) Zip 4 vectors
zip5 :: (Unbox a, Unbox b, Unbox c, Unbox d, Unbox e) => MVector s a -> MVector s b -> MVector s c -> MVector s d -> MVector s e -> MVector s (a, b, c, d, e)Source
O(1) Zip 5 vectors
zip6 :: (Unbox a, Unbox b, Unbox c, Unbox d, Unbox e, Unbox f) => MVector s a -> MVector s b -> MVector s c -> MVector s d -> MVector s e -> MVector s f -> MVector s (a, b, c, d, e, f)Source
O(1) Zip 6 vectors
unzip :: (Unbox a, Unbox b) => MVector s (a, b) -> (MVector s a, MVector s b)Source
O(1) Unzip 2 vectors
unzip3 :: (Unbox a, Unbox b, Unbox c) => MVector s (a, b, c) -> (MVector s a, MVector s b, MVector s c)Source
O(1) Unzip 3 vectors
unzip4 :: (Unbox a, Unbox b, Unbox c, Unbox d) => MVector s (a, b, c, d) -> (MVector s a, MVector s b, MVector s c, MVector s d)Source
O(1) Unzip 4 vectors
unzip5 :: (Unbox a, Unbox b, Unbox c, Unbox d, Unbox e) => MVector s (a, b, c, d, e) -> (MVector s a, MVector s b, MVector s c, MVector s d, MVector s e)Source
O(1) Unzip 5 vectors
unzip6 :: (Unbox a, Unbox b, Unbox c, Unbox d, Unbox e, Unbox f) => MVector s (a, b, c, d, e, f) -> (MVector s a, MVector s b, MVector s c, MVector s d, MVector s e, MVector s f)Source
O(1) Unzip 6 vectors
Unsafe operations
unsafeSliceSource
:: Unbox a
=> Intlength of the slice
-> Int
-> MVector s a
-> MVector s a
Yield a part of the mutable vector without copying it. No bounds checks are performed.
unsafeNew :: (PrimMonad m, Unbox a) => Int -> m (MVector (PrimState m) a)Source
Create a mutable vector of the given length. The length is not checked.
unsafeNewWith :: (PrimMonad m, Unbox a) => Int -> a -> m (MVector (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, Unbox a) => MVector (PrimState m) a -> Int -> m aSource
Yield the element at the given position. No bounds checks are performed.
unsafeWrite :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> Int -> a -> m ()Source
Replace the element at the given position. No bounds checks are performed.
unsafeSwap :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> Int -> Int -> m ()Source
Swap the elements at the given positions. No bounds checks are performed.
unsafeCopySource
:: (PrimMonad m, Unbox a)
=> MVector (PrimState m) asource
-> MVector (PrimState m) a
-> m ()
Copy a vector. The two vectors must have the same length and may not overlap. This is not checked.
unsafeGrow :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> Int -> m (MVector (PrimState m) a)Source
Grow a vector by the given number of elements. The number must be positive but this is not checked.
Produced by Haddock version 2.6.0