Portability | non-portable |
---|---|
Stability | experimental |
Maintainer | Roman Leshchinskiy <rl@cse.unsw.edu.au> |
Unboxed vectors of primitive types.
- data Vector a
- data MVector m a = MVector !Int !Int !(MutableByteArray m)
- class Prim a
- length :: Prim a => Vector a -> Int
- null :: Prim a => Vector a -> Bool
- empty :: Prim a => Vector a
- singleton :: Prim a => a -> Vector a
- cons :: Prim a => a -> Vector a -> Vector a
- snoc :: Prim a => Vector a -> a -> Vector a
- replicate :: Prim a => Int -> a -> Vector a
- (++) :: Prim a => Vector a -> Vector a -> Vector a
- copy :: Prim a => Vector a -> Vector a
- (!) :: Prim a => Vector a -> Int -> a
- head :: Prim a => Vector a -> a
- last :: Prim a => Vector a -> a
- slice :: Prim a => Vector a -> Int -> Int -> Vector a
- init :: Prim a => Vector a -> Vector a
- tail :: Prim a => Vector a -> Vector a
- take :: Prim a => Int -> Vector a -> Vector a
- drop :: Prim a => Int -> Vector a -> Vector a
- accum :: Prim a => (a -> b -> a) -> Vector a -> [(Int, b)] -> Vector a
- (//) :: Prim a => Vector a -> [(Int, a)] -> Vector a
- backpermute :: Prim a => Vector a -> Vector Int -> Vector a
- reverse :: Prim a => Vector a -> Vector a
- map :: (Prim a, Prim b) => (a -> b) -> Vector a -> Vector b
- concatMap :: (Prim a, Prim b) => (a -> Vector b) -> Vector a -> Vector b
- zipWith :: (Prim a, Prim b, Prim c) => (a -> b -> c) -> Vector a -> Vector b -> Vector c
- zipWith3 :: (Prim a, Prim b, Prim c, Prim d) => (a -> b -> c -> d) -> Vector a -> Vector b -> Vector c -> Vector d
- filter :: Prim a => (a -> Bool) -> Vector a -> Vector a
- takeWhile :: Prim a => (a -> Bool) -> Vector a -> Vector a
- dropWhile :: Prim a => (a -> Bool) -> Vector a -> Vector a
- elem :: (Prim a, Eq a) => a -> Vector a -> Bool
- notElem :: (Prim a, Eq a) => a -> Vector a -> Bool
- find :: Prim a => (a -> Bool) -> Vector a -> Maybe a
- findIndex :: Prim a => (a -> Bool) -> Vector a -> Maybe Int
- foldl :: Prim b => (a -> b -> a) -> a -> Vector b -> a
- foldl1 :: Prim a => (a -> a -> a) -> Vector a -> a
- foldl' :: Prim b => (a -> b -> a) -> a -> Vector b -> a
- foldl1' :: Prim a => (a -> a -> a) -> Vector a -> a
- foldr :: Prim a => (a -> b -> b) -> b -> Vector a -> b
- foldr1 :: Prim a => (a -> a -> a) -> Vector a -> a
- sum :: (Prim a, Num a) => Vector a -> a
- product :: (Prim a, Num a) => Vector a -> a
- maximum :: (Prim a, Ord a) => Vector a -> a
- minimum :: (Prim a, Ord a) => Vector a -> a
- unfoldr :: Prim a => (b -> Maybe (a, b)) -> b -> Vector a
- prescanl :: (Prim a, Prim b) => (a -> b -> a) -> a -> Vector b -> Vector a
- prescanl' :: (Prim a, Prim b) => (a -> b -> a) -> a -> Vector b -> Vector a
- postscanl :: (Prim a, Prim b) => (a -> b -> a) -> a -> Vector b -> Vector a
- postscanl' :: (Prim a, Prim b) => (a -> b -> a) -> a -> Vector b -> Vector a
- scanl :: (Prim a, Prim b) => (a -> b -> a) -> a -> Vector b -> Vector a
- scanl' :: (Prim a, Prim b) => (a -> b -> a) -> a -> Vector b -> Vector a
- scanl1 :: Prim a => (a -> a -> a) -> Vector a -> Vector a
- scanl1' :: Prim a => (a -> a -> a) -> Vector a -> Vector a
- enumFromTo :: (Prim a, Enum a) => a -> a -> Vector a
- enumFromThenTo :: (Prim a, Enum a) => a -> a -> a -> Vector a
- toList :: Prim a => Vector a -> [a]
- fromList :: Prim a => [a] -> Vector a
Documentation
Unboxed vectors of primitive types
Mutable unboxed vectors. They live in the ST
monad.
MVector !Int !Int !(MutableByteArray m) |
class Prim a
Class of types supporting primitive array operations
Length information
Construction
replicate :: Prim a => Int -> a -> Vector aSource
Vector of the given length with the given value in each position
copy :: Prim a => Vector a -> Vector aSource
Create a copy of a vector. Useful when dealing with slices.
Accessing individual elements
Subvectors
Yield a part of the vector without copying it. Safer version of
unsafeSlice
.
drop :: Prim a => Int -> Vector a -> Vector aSource
Yield all but the first n
elements without copying.
Permutations
Mapping
Zipping and unzipping
zipWith :: (Prim a, Prim b, Prim c) => (a -> b -> c) -> Vector a -> Vector b -> Vector cSource
Zip two vectors with the given function.
zipWith3 :: (Prim a, Prim b, Prim c, Prim d) => (a -> b -> c -> d) -> Vector a -> Vector b -> Vector c -> Vector dSource
Zip three vectors with the given function.
Filtering
filter :: Prim a => (a -> Bool) -> Vector a -> Vector aSource
Drop elements which do not satisfy the predicate
takeWhile :: Prim a => (a -> Bool) -> Vector a -> Vector aSource
Yield the longest prefix of elements satisfying the predicate.
dropWhile :: Prim a => (a -> Bool) -> Vector a -> Vector aSource
Drop the longest prefix of elements that satisfy the predicate.
Searching
Folding
foldl1' :: Prim a => (a -> a -> a) -> Vector a -> aSource
Left fold on non-empty vectors with strict accumulator
Specialised folds
Unfolding
Scans
prescanl' :: (Prim a, Prim b) => (a -> b -> a) -> a -> Vector b -> Vector aSource
Prefix scan with strict accumulator
postscanl' :: (Prim a, Prim b) => (a -> b -> a) -> a -> Vector b -> Vector aSource
Suffix scan with strict accumulator
scanl' :: (Prim a, Prim b) => (a -> b -> a) -> a -> Vector b -> Vector aSource
Haskell-style scan with strict accumulator
scanl1' :: Prim a => (a -> a -> a) -> Vector a -> Vector aSource
Scan over a non-empty Vector
with a strict accumulator
Enumeration
enumFromTo :: (Prim a, Enum a) => a -> a -> Vector aSource
enumFromThenTo :: (Prim a, Enum a) => a -> a -> a -> Vector aSource