Copyright | Andrew Martin |
---|---|
License | BSD-style |
Maintainer | Andrew Martin <andrew.thaddeus@gmail.com> |
Stability | experimental |
Portability | non-portable |
Safe Haskell | None |
Language | Haskell2010 |
Vectors for vinyl records
- data MVector :: * -> * -> * where
- length :: MVector s (Rec Identity rs) -> Int
- null :: MVector s (Rec Identity rs) -> Bool
- slice :: MVector MVector (Rec Identity rs) => Int -> Int -> MVector s (Rec Identity rs) -> MVector s (Rec Identity rs)
- init :: MVector MVector (Rec Identity rs) => MVector s (Rec Identity rs) -> MVector s (Rec Identity rs)
- tail :: MVector MVector (Rec Identity rs) => MVector s (Rec Identity rs) -> MVector s (Rec Identity rs)
- take :: MVector MVector (Rec Identity rs) => Int -> MVector s (Rec Identity rs) -> MVector s (Rec Identity rs)
- drop :: MVector MVector (Rec Identity rs) => Int -> MVector s (Rec Identity rs) -> MVector s (Rec Identity rs)
- splitAt :: MVector MVector (Rec Identity rs) => Int -> MVector s (Rec Identity rs) -> (MVector s (Rec Identity rs), MVector s (Rec Identity rs))
- unsafeSlice :: MVector MVector (Rec Identity rs) => Int -> Int -> MVector s (Rec Identity rs) -> MVector s (Rec Identity rs)
- unsafeInit :: MVector MVector (Rec Identity rs) => MVector s (Rec Identity rs) -> MVector s (Rec Identity rs)
- unsafeTail :: MVector MVector (Rec Identity rs) => MVector s (Rec Identity rs) -> MVector s (Rec Identity rs)
- unsafeTake :: MVector MVector (Rec Identity rs) => Int -> MVector s (Rec Identity rs) -> MVector s (Rec Identity rs)
- unsafeDrop :: MVector MVector (Rec Identity rs) => Int -> MVector s (Rec Identity rs) -> MVector s (Rec Identity rs)
- overlaps :: MVector MVector (Rec Identity rs) => MVector s (Rec Identity rs) -> MVector s (Rec Identity rs) -> Bool
- new :: (PrimMonad m, MVector MVector (Rec Identity rs)) => Int -> m (MVector (PrimState m) (Rec Identity rs))
- unsafeNew :: (PrimMonad m, MVector MVector (Rec Identity rs)) => Int -> m (MVector (PrimState m) (Rec Identity rs))
- replicate :: (PrimMonad m, MVector MVector (Rec Identity rs)) => Int -> Rec Identity rs -> m (MVector (PrimState m) (Rec Identity rs))
- replicateM :: (PrimMonad m, MVector MVector (Rec Identity rs)) => Int -> m (Rec Identity rs) -> m (MVector (PrimState m) (Rec Identity rs))
- clone :: (PrimMonad m, MVector MVector (Rec Identity rs)) => MVector (PrimState m) (Rec Identity rs) -> m (MVector (PrimState m) (Rec Identity rs))
- grow :: (PrimMonad m, MVector MVector (Rec Identity rs)) => MVector (PrimState m) (Rec Identity rs) -> Int -> m (MVector (PrimState m) (Rec Identity rs))
- unsafeGrow :: (PrimMonad m, MVector MVector (Rec Identity rs)) => MVector (PrimState m) (Rec Identity rs) -> Int -> m (MVector (PrimState m) (Rec Identity rs))
- clear :: (PrimMonad m, MVector MVector (Rec Identity rs)) => MVector (PrimState m) (Rec Identity rs) -> m ()
- read :: (PrimMonad m, MVector MVector (Rec Identity rs)) => MVector (PrimState m) (Rec Identity rs) -> Int -> m (Rec Identity rs)
- write :: (PrimMonad m, MVector MVector (Rec Identity rs)) => MVector (PrimState m) (Rec Identity rs) -> Int -> Rec Identity rs -> m ()
- swap :: (PrimMonad m, MVector MVector (Rec Identity rs)) => MVector (PrimState m) (Rec Identity rs) -> Int -> Int -> m ()
- unsafeRead :: (PrimMonad m, MVector MVector (Rec Identity rs)) => MVector (PrimState m) (Rec Identity rs) -> Int -> m (Rec Identity rs)
- unsafeWrite :: (PrimMonad m, MVector MVector (Rec Identity rs)) => MVector (PrimState m) (Rec Identity rs) -> Int -> Rec Identity rs -> m ()
- unsafeSwap :: (PrimMonad m, MVector MVector (Rec Identity rs)) => MVector (PrimState m) (Rec Identity rs) -> Int -> Int -> m ()
- set :: (PrimMonad m, MVector MVector (Rec Identity rs)) => MVector (PrimState m) (Rec Identity rs) -> Rec Identity rs -> m ()
- copy :: (PrimMonad m, MVector MVector (Rec Identity rs)) => MVector (PrimState m) (Rec Identity rs) -> MVector (PrimState m) (Rec Identity rs) -> m ()
- move :: (PrimMonad m, MVector MVector (Rec Identity rs)) => MVector (PrimState m) (Rec Identity rs) -> MVector (PrimState m) (Rec Identity rs) -> m ()
- unsafeCopy :: (PrimMonad m, MVector MVector (Rec Identity rs)) => MVector (PrimState m) (Rec Identity rs) -> MVector (PrimState m) (Rec Identity rs) -> m ()
- unsafeMove :: (PrimMonad m, MVector MVector (Rec Identity rs)) => MVector (PrimState m) (Rec Identity rs) -> MVector (PrimState m) (Rec Identity rs) -> m ()
Mutable vectors of primitive types
Accessors
Length information
Extracting subvectors
slice :: MVector MVector (Rec Identity rs) => Int -> Int -> MVector s (Rec Identity rs) -> MVector s (Rec Identity rs) Source
Yield a part of the mutable vector without copying it.
init :: MVector MVector (Rec Identity rs) => MVector s (Rec Identity rs) -> MVector s (Rec Identity rs) Source
tail :: MVector MVector (Rec Identity rs) => MVector s (Rec Identity rs) -> MVector s (Rec Identity rs) Source
take :: MVector MVector (Rec Identity rs) => Int -> MVector s (Rec Identity rs) -> MVector s (Rec Identity rs) Source
drop :: MVector MVector (Rec Identity rs) => Int -> MVector s (Rec Identity rs) -> MVector s (Rec Identity rs) Source
splitAt :: MVector MVector (Rec Identity rs) => Int -> MVector s (Rec Identity rs) -> (MVector s (Rec Identity rs), MVector s (Rec Identity rs)) Source
:: MVector MVector (Rec Identity rs) | |
=> Int | starting index |
-> Int | length of the slice |
-> MVector s (Rec Identity rs) | |
-> MVector s (Rec Identity rs) |
Yield a part of the mutable vector without copying it. No bounds checks are performed.
unsafeInit :: MVector MVector (Rec Identity rs) => MVector s (Rec Identity rs) -> MVector s (Rec Identity rs) Source
unsafeTail :: MVector MVector (Rec Identity rs) => MVector s (Rec Identity rs) -> MVector s (Rec Identity rs) Source
unsafeTake :: MVector MVector (Rec Identity rs) => Int -> MVector s (Rec Identity rs) -> MVector s (Rec Identity rs) Source
unsafeDrop :: MVector MVector (Rec Identity rs) => Int -> MVector s (Rec Identity rs) -> MVector s (Rec Identity rs) Source
Overlapping
overlaps :: MVector MVector (Rec Identity rs) => MVector s (Rec Identity rs) -> MVector s (Rec Identity rs) -> Bool Source
Check whether two vectors overlap.
Construction
Initialisation
new :: (PrimMonad m, MVector MVector (Rec Identity rs)) => Int -> m (MVector (PrimState m) (Rec Identity rs)) Source
Create a mutable vector of the given length.
unsafeNew :: (PrimMonad m, MVector MVector (Rec Identity rs)) => Int -> m (MVector (PrimState m) (Rec Identity rs)) Source
Create a mutable vector of the given length. The length is not checked.
replicate :: (PrimMonad m, MVector MVector (Rec Identity rs)) => Int -> Rec Identity rs -> m (MVector (PrimState m) (Rec Identity rs)) Source
Create a mutable vector of the given length (0 if the length is negative) and fill it with an initial value.
replicateM :: (PrimMonad m, MVector MVector (Rec Identity rs)) => Int -> m (Rec Identity rs) -> m (MVector (PrimState m) (Rec Identity rs)) Source
Create a mutable vector of the given length (0 if the length is negative) and fill it with values produced by repeatedly executing the monadic action.
clone :: (PrimMonad m, MVector MVector (Rec Identity rs)) => MVector (PrimState m) (Rec Identity rs) -> m (MVector (PrimState m) (Rec Identity rs)) Source
Create a copy of a mutable vector.
Growing
grow :: (PrimMonad m, MVector MVector (Rec Identity rs)) => MVector (PrimState m) (Rec Identity rs) -> Int -> m (MVector (PrimState m) (Rec Identity rs)) Source
Grow a vector by the given number of elements. The number must be positive.
unsafeGrow :: (PrimMonad m, MVector MVector (Rec Identity rs)) => MVector (PrimState m) (Rec Identity rs) -> Int -> m (MVector (PrimState m) (Rec Identity rs)) Source
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 MVector (Rec Identity rs)) => MVector (PrimState m) (Rec Identity rs) -> 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.
Zipping and unzipping - Omitting for now
Accessing individual elements
read :: (PrimMonad m, MVector MVector (Rec Identity rs)) => MVector (PrimState m) (Rec Identity rs) -> Int -> m (Rec Identity rs) Source
Yield the element at the given position.
write :: (PrimMonad m, MVector MVector (Rec Identity rs)) => MVector (PrimState m) (Rec Identity rs) -> Int -> Rec Identity rs -> m () Source
Replace the element at the given position.
swap :: (PrimMonad m, MVector MVector (Rec Identity rs)) => MVector (PrimState m) (Rec Identity rs) -> Int -> Int -> m () Source
Swap the elements at the given positions.
unsafeRead :: (PrimMonad m, MVector MVector (Rec Identity rs)) => MVector (PrimState m) (Rec Identity rs) -> Int -> m (Rec Identity rs) Source
Yield the element at the given position. No bounds checks are performed.
unsafeWrite :: (PrimMonad m, MVector MVector (Rec Identity rs)) => MVector (PrimState m) (Rec Identity rs) -> Int -> Rec Identity rs -> m () Source
Replace the element at the given position. No bounds checks are performed.
unsafeSwap :: (PrimMonad m, MVector MVector (Rec Identity rs)) => MVector (PrimState m) (Rec Identity rs) -> Int -> Int -> m () Source
Swap the elements at the given positions. No bounds checks are performed.
Modifying vectors
Filling and copying
set :: (PrimMonad m, MVector MVector (Rec Identity rs)) => MVector (PrimState m) (Rec Identity rs) -> Rec Identity rs -> m () Source
Set all elements of the vector to the given value.
copy :: (PrimMonad m, MVector MVector (Rec Identity rs)) => MVector (PrimState m) (Rec Identity rs) -> MVector (PrimState m) (Rec Identity rs) -> m () Source
Copy a vector. The two vectors must have the same length and may not overlap.
move :: (PrimMonad m, MVector MVector (Rec Identity rs)) => MVector (PrimState m) (Rec Identity rs) -> MVector (PrimState m) (Rec Identity rs) -> m () Source
Move the contents of a vector. The two vectors must have the same length.
If the vectors do not overlap, then this is equivalent to copy
.
Otherwise, the copying is performed as if the source vector were
copied to a temporary vector and then the temporary vector was copied
to the target vector.
:: (PrimMonad m, MVector MVector (Rec Identity rs)) | |
=> MVector (PrimState m) (Rec Identity rs) | target |
-> MVector (PrimState m) (Rec Identity rs) | source |
-> m () |
Copy a vector. The two vectors must have the same length and may not overlap. This is not checked.
:: (PrimMonad m, MVector MVector (Rec Identity rs)) | |
=> MVector (PrimState m) (Rec Identity rs) | target |
-> MVector (PrimState m) (Rec Identity rs) | source |
-> m () |
Move the contents of a vector. The two vectors must have the same length, but this is not checked.
If the vectors do not overlap, then this is equivalent to unsafeCopy
.
Otherwise, the copying is performed as if the source vector were
copied to a temporary vector and then the temporary vector was copied
to the target vector.