vector-0.4.1: Efficient ArraysSource codeContentsIndex
Data.Vector
Portabilitynon-portable
Stabilityexperimental
MaintainerRoman Leshchinskiy <rl@cse.unsw.edu.au>
Contents
Length information
Construction
Accessing individual elements
Subvectors
Permutations
Mapping
Zipping and unzipping
Filtering
Searching
Folding
Specialised folds
Unfolding
Scans
Enumeration
Conversion to/from lists
Description
Boxed vectors
Synopsis
data Vector a
data MVector m a
length :: Vector a -> Int
null :: Vector a -> Bool
empty :: Vector a
singleton :: a -> Vector a
cons :: a -> Vector a -> Vector a
snoc :: Vector a -> a -> Vector a
replicate :: Int -> a -> Vector a
(++) :: Vector a -> Vector a -> Vector a
copy :: Vector a -> Vector a
(!) :: Vector a -> Int -> a
head :: Vector a -> a
last :: Vector a -> a
indexM :: Monad m => Vector a -> Int -> m a
headM :: Monad m => Vector a -> m a
lastM :: Monad m => Vector a -> m a
slice :: Vector a -> Int -> Int -> Vector a
init :: Vector a -> Vector a
tail :: Vector a -> Vector a
take :: Int -> Vector a -> Vector a
drop :: Int -> Vector a -> Vector a
accum :: (a -> b -> a) -> Vector a -> [(Int, b)] -> Vector a
(//) :: Vector a -> [(Int, a)] -> Vector a
update :: Vector a -> Vector (Int, a) -> Vector a
backpermute :: Vector a -> Vector Int -> Vector a
reverse :: Vector a -> Vector a
map :: (a -> b) -> Vector a -> Vector b
concatMap :: (a -> Vector b) -> Vector a -> Vector b
zipWith :: (a -> b -> c) -> Vector a -> Vector b -> Vector c
zipWith3 :: (a -> b -> c -> d) -> Vector a -> Vector b -> Vector c -> Vector d
zip :: Vector a -> Vector b -> Vector (a, b)
zip3 :: Vector a -> Vector b -> Vector c -> Vector (a, b, c)
unzip :: Vector (a, b) -> (Vector a, Vector b)
unzip3 :: Vector (a, b, c) -> (Vector a, Vector b, Vector c)
filter :: (a -> Bool) -> Vector a -> Vector a
takeWhile :: (a -> Bool) -> Vector a -> Vector a
dropWhile :: (a -> Bool) -> Vector a -> Vector a
elem :: Eq a => a -> Vector a -> Bool
notElem :: Eq a => a -> Vector a -> Bool
find :: (a -> Bool) -> Vector a -> Maybe a
findIndex :: (a -> Bool) -> Vector a -> Maybe Int
foldl :: (a -> b -> a) -> a -> Vector b -> a
foldl1 :: (a -> a -> a) -> Vector a -> a
foldl' :: (a -> b -> a) -> a -> Vector b -> a
foldl1' :: (a -> a -> a) -> Vector a -> a
foldr :: (a -> b -> b) -> b -> Vector a -> b
foldr1 :: (a -> a -> a) -> Vector a -> a
and :: Vector Bool -> Bool
or :: Vector Bool -> Bool
sum :: Num a => Vector a -> a
product :: Num a => Vector a -> a
maximum :: Ord a => Vector a -> a
minimum :: Ord a => Vector a -> a
unfoldr :: (b -> Maybe (a, b)) -> b -> Vector a
prescanl :: (a -> b -> a) -> a -> Vector b -> Vector a
prescanl' :: (a -> b -> a) -> a -> Vector b -> Vector a
postscanl :: (a -> b -> a) -> a -> Vector b -> Vector a
postscanl' :: (a -> b -> a) -> a -> Vector b -> Vector a
scanl :: (a -> b -> a) -> a -> Vector b -> Vector a
scanl' :: (a -> b -> a) -> a -> Vector b -> Vector a
scanl1 :: (a -> a -> a) -> Vector a -> Vector a
scanl1' :: (a -> a -> a) -> Vector a -> Vector a
enumFromTo :: Enum a => a -> a -> Vector a
enumFromThenTo :: Enum a => a -> a -> a -> Vector a
toList :: Vector a -> [a]
fromList :: [a] -> Vector a
Documentation
data Vector a Source
show/hide Instances
Vector Vector a
Eq a => Eq (Vector a)
Ord a => Ord (Vector a)
Show a => Show (Vector a)
data MVector m a Source
Mutable boxed vectors keyed on the monad they live in (IO or ST s).
show/hide Instances
Length information
length :: Vector a -> IntSource
null :: Vector a -> BoolSource
Construction
empty :: Vector aSource
Empty vector
singleton :: a -> Vector aSource
Vector with exaclty one element
cons :: a -> Vector a -> Vector aSource
Prepend an element
snoc :: Vector a -> a -> Vector aSource
Append an element
replicate :: Int -> a -> Vector aSource
Vector of the given length with the given value in each position
(++) :: Vector a -> Vector a -> Vector aSource
Concatenate two vectors
copy :: Vector a -> Vector aSource
Create a copy of a vector. Useful when dealing with slices.
Accessing individual elements
(!) :: Vector a -> Int -> aSource
Indexing
head :: Vector a -> aSource
First element
last :: Vector a -> aSource
Last element
indexM :: Monad m => Vector a -> Int -> m aSource
Monadic indexing which can be strict in the vector while remaining lazy in the element
headM :: Monad m => Vector a -> m aSource
lastM :: Monad m => Vector a -> m aSource
Subvectors
sliceSource
::
=> Vector a
-> Intstarting index
-> Intlength
-> Vector a
Yield a part of the vector without copying it. Safer version of unsafeSlice.
init :: Vector a -> Vector aSource
Yield all but the last element without copying.
tail :: Vector a -> Vector aSource
All but the first element (without copying).
take :: Int -> Vector a -> Vector aSource
Yield the first n elements without copying.
drop :: Int -> Vector a -> Vector aSource
Yield all but the first n elements without copying.
Permutations
accum :: (a -> b -> a) -> Vector a -> [(Int, b)] -> Vector aSource
(//) :: Vector a -> [(Int, a)] -> Vector aSource
update :: Vector a -> Vector (Int, a) -> Vector aSource
backpermute :: Vector a -> Vector Int -> Vector aSource
reverse :: Vector a -> Vector aSource
Mapping
map :: (a -> b) -> Vector a -> Vector bSource
Map a function over a vector
concatMap :: (a -> Vector b) -> Vector a -> Vector bSource
Zipping and unzipping
zipWith :: (a -> b -> c) -> Vector a -> Vector b -> Vector cSource
Zip two vectors with the given function.
zipWith3 :: (a -> b -> c -> d) -> Vector a -> Vector b -> Vector c -> Vector dSource
Zip three vectors with the given function.
zip :: Vector a -> Vector b -> Vector (a, b)Source
zip3 :: Vector a -> Vector b -> Vector c -> Vector (a, b, c)Source
unzip :: Vector (a, b) -> (Vector a, Vector b)Source
unzip3 :: Vector (a, b, c) -> (Vector a, Vector b, Vector c)Source
Filtering
filter :: (a -> Bool) -> Vector a -> Vector aSource
Drop elements which do not satisfy the predicate
takeWhile :: (a -> Bool) -> Vector a -> Vector aSource
Yield the longest prefix of elements satisfying the predicate.
dropWhile :: (a -> Bool) -> Vector a -> Vector aSource
Drop the longest prefix of elements that satisfy the predicate.
Searching
elem :: Eq a => a -> Vector a -> BoolSource
Check whether the vector contains an element
notElem :: Eq a => a -> Vector a -> BoolSource
Inverse of elem
find :: (a -> Bool) -> Vector a -> Maybe aSource
Yield Just the first element matching the predicate or Nothing if no such element exists.
findIndex :: (a -> Bool) -> Vector a -> Maybe IntSource
Yield Just the index of the first element matching the predicate or Nothing if no such element exists.
Folding
foldl :: (a -> b -> a) -> a -> Vector b -> aSource
Left fold
foldl1 :: (a -> a -> a) -> Vector a -> aSource
Lefgt fold on non-empty vectors
foldl' :: (a -> b -> a) -> a -> Vector b -> aSource
Left fold with strict accumulator
foldl1' :: (a -> a -> a) -> Vector a -> aSource
Left fold on non-empty vectors with strict accumulator
foldr :: (a -> b -> b) -> b -> Vector a -> bSource
Right fold
foldr1 :: (a -> a -> a) -> Vector a -> aSource
Right fold on non-empty vectors
Specialised folds
and :: Vector Bool -> BoolSource
or :: Vector Bool -> BoolSource
sum :: Num a => Vector a -> aSource
product :: Num a => Vector a -> aSource
maximum :: Ord a => Vector a -> aSource
minimum :: Ord a => Vector a -> aSource
Unfolding
unfoldr :: (b -> Maybe (a, b)) -> b -> Vector aSource
Scans
prescanl :: (a -> b -> a) -> a -> Vector b -> Vector aSource
Prefix scan
prescanl' :: (a -> b -> a) -> a -> Vector b -> Vector aSource
Prefix scan with strict accumulator
postscanl :: (a -> b -> a) -> a -> Vector b -> Vector aSource
Suffix scan
postscanl' :: (a -> b -> a) -> a -> Vector b -> Vector aSource
Suffix scan with strict accumulator
scanl :: (a -> b -> a) -> a -> Vector b -> Vector aSource
Haskell-style scan
scanl' :: (a -> b -> a) -> a -> Vector b -> Vector aSource
Haskell-style scan with strict accumulator
scanl1 :: (a -> a -> a) -> Vector a -> Vector aSource
Scan over a non-empty Vector
scanl1' :: (a -> a -> a) -> Vector a -> Vector aSource
Scan over a non-empty Vector with a strict accumulator
Enumeration
enumFromTo :: Enum a => a -> a -> Vector aSource
enumFromThenTo :: Enum a => a -> a -> a -> Vector aSource
Conversion to/from lists
toList :: Vector a -> [a]Source
Convert a vector to a list
fromList :: [a] -> Vector aSource
Convert a list to a vector
Produced by Haddock version 2.4.2