vector-0.6.0.2: Efficient ArraysSource codeContentsIndex
Data.Vector.Mutable
Portabilitynon-portable
Stabilityexperimental
MaintainerRoman Leshchinskiy <rl@cse.unsw.edu.au>
Contents
Mutable boxed vectors
Operations on mutable vectors
Unsafe operations
Description
Mutable boxed vectors.
Synopsis
data MVector s a = MVector !Int !Int !(MutableArray s a)
type IOVector = MVector RealWorld
type STVector s = MVector s
length :: MVector s a -> Int
overlaps :: MVector s a -> MVector s a -> Bool
slice :: Int -> Int -> MVector s a -> MVector s a
new :: PrimMonad m => Int -> m (MVector (PrimState m) a)
newWith :: PrimMonad m => Int -> a -> m (MVector (PrimState m) a)
read :: PrimMonad m => MVector (PrimState m) a -> Int -> m a
write :: PrimMonad m => MVector (PrimState m) a -> Int -> a -> m ()
swap :: PrimMonad m => MVector (PrimState m) a -> Int -> Int -> m ()
clear :: PrimMonad m => MVector (PrimState m) a -> m ()
set :: PrimMonad m => MVector (PrimState m) a -> a -> m ()
copy :: PrimMonad m => MVector (PrimState m) a -> MVector (PrimState m) a -> m ()
grow :: PrimMonad m => MVector (PrimState m) a -> Int -> m (MVector (PrimState m) a)
unsafeSlice :: Int -> Int -> MVector s a -> MVector s a
unsafeNew :: PrimMonad m => Int -> m (MVector (PrimState m) a)
unsafeNewWith :: PrimMonad m => Int -> a -> m (MVector (PrimState m) a)
unsafeRead :: PrimMonad m => MVector (PrimState m) a -> Int -> m a
unsafeWrite :: PrimMonad m => MVector (PrimState m) a -> Int -> a -> m ()
unsafeCopy :: PrimMonad m => MVector (PrimState m) a -> MVector (PrimState m) a -> m ()
unsafeGrow :: PrimMonad m => MVector (PrimState m) a -> Int -> m (MVector (PrimState m) a)
Mutable boxed vectors
data MVector s a Source
Mutable boxed vectors keyed on the monad they live in (IO or ST s).
Constructors
MVector !Int !Int !(MutableArray s a)
show/hide Instances
type IOVector = MVector RealWorldSource
type STVector s = MVector sSource
Operations on mutable vectors
length :: MVector s a -> IntSource
Length of the mutable vector.
overlaps :: MVector s a -> MVector s a -> BoolSource
slice :: Int -> Int -> MVector s a -> MVector s aSource
Yield a part of the mutable vector without copying it.
new :: PrimMonad m => Int -> m (MVector (PrimState m) a)Source
Create a mutable vector of the given length.
newWith :: PrimMonad m => 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 => MVector (PrimState m) a -> Int -> m aSource
Yield the element at the given position.
write :: PrimMonad m => MVector (PrimState m) a -> Int -> a -> m ()Source
Replace the element at the given position.
swap :: PrimMonad m => MVector (PrimState m) a -> Int -> Int -> m ()Source
Swap the elements at the given positions.
clear :: PrimMonad m => 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 => MVector (PrimState m) a -> a -> m ()Source
Set all elements of the vector to the given value.
copy :: PrimMonad m => 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 => 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.
Unsafe operations
unsafeSliceSource
::
=> Intstarting index
-> Intlength of the slice
-> MVector s a
-> MVector s a
Yield a part of the mutable vector without copying it. No bounds checks are performed.
unsafeNew :: PrimMonad m => Int -> m (MVector (PrimState m) a)Source
Create a mutable vector of the given length. The length is not checked.
unsafeNewWith :: PrimMonad m => 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 => MVector (PrimState m) a -> Int -> m aSource
Yield the element at the given position. No bounds checks are performed.
unsafeWrite :: PrimMonad m => MVector (PrimState m) a -> Int -> a -> m ()Source
Replace the element at the given position. No bounds checks are performed.
unsafeCopySource
:: PrimMonad m
=> MVector (PrimState m) atarget
-> MVector (PrimState m) asource
-> m ()
Copy a vector. The two vectors must have the same length and may not overlap. This is not checked.
unsafeGrow :: PrimMonad m => 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.4.2