vector-0.3: Efficient Arrays

Portabilitynon-portable
Stabilityexperimental
MaintainerRoman Leshchinskiy <rl@cse.unsw.edu.au>

Data.Vector.Unboxed

Contents

Description

Unboxed vectors based on Unbox.

Synopsis

Documentation

data Vector a Source

Unboxed vectors

Instances

Unbox a => IVector Vector a 
(Unbox a, Eq a) => Eq (Vector a) 
(Unbox a, Ord a) => Ord (Vector a) 
(Show a, Unbox a) => Show (Vector a) 

Length information

Construction

empty :: Unbox a => Vector aSource

Empty vector

singleton :: Unbox a => a -> Vector aSource

Vector with exaclty one element

cons :: Unbox a => a -> Vector a -> Vector aSource

Prepend an element

snoc :: Unbox a => Vector a -> a -> Vector aSource

Append an element

replicate :: Unbox a => Int -> a -> Vector aSource

Vector of the given length with the given value in each position

(++) :: Unbox a => Vector a -> Vector a -> Vector aSource

Concatenate two vectors

copy :: Unbox a => Vector a -> Vector aSource

Create a copy of a vector. Useful when dealing with slices.

Accessing individual elements

(!) :: Unbox a => Vector a -> Int -> aSource

Indexing

head :: Unbox a => Vector a -> aSource

First element

last :: Unbox a => Vector a -> aSource

Last element

Subvectors

sliceSource

Arguments

:: Unbox a 
=> Vector a 
-> Int

starting index

-> Int

length

-> Vector a 

Yield a part of the vector without copying it. Safer version of unsafeSlice.

init :: Unbox a => Vector a -> Vector aSource

Yield all but the last element without copying.

tail :: Unbox a => Vector a -> Vector aSource

All but the first element (without copying).

take :: Unbox a => Int -> Vector a -> Vector aSource

Yield the first n elements without copying.

drop :: Unbox a => Int -> Vector a -> Vector aSource

Yield all but the first n elements without copying.

Permutations

accum :: Unbox a => (a -> b -> a) -> Vector a -> [(Int, b)] -> Vector aSource

(//) :: Unbox a => Vector a -> [(Int, a)] -> Vector aSource

Mapping

map :: (Unbox a, Unbox b) => (a -> b) -> Vector a -> Vector bSource

Map a function over a vector

concatMap :: (Unbox a, Unbox b) => (a -> Vector b) -> Vector a -> Vector bSource

Zipping and unzipping

zipWith :: (Unbox a, Unbox b, Unbox c) => (a -> b -> c) -> Vector a -> Vector b -> Vector cSource

Zip two vectors with the given function.

zipWith3 :: (Unbox a, Unbox b, Unbox c, Unbox d) => (a -> b -> c -> d) -> Vector a -> Vector b -> Vector c -> Vector dSource

Zip three vectors with the given function.

Filtering

filter :: Unbox a => (a -> Bool) -> Vector a -> Vector aSource

Drop elements which do not satisfy the predicate

takeWhile :: Unbox a => (a -> Bool) -> Vector a -> Vector aSource

Yield the longest prefix of elements satisfying the predicate.

dropWhile :: Unbox a => (a -> Bool) -> Vector a -> Vector aSource

Drop the longest prefix of elements that satisfy the predicate.

Searching

elem :: (Unbox a, Eq a) => a -> Vector a -> BoolSource

Check whether the vector contains an element

notElem :: (Unbox a, Eq a) => a -> Vector a -> BoolSource

Inverse of elem

find :: Unbox a => (a -> Bool) -> Vector a -> Maybe aSource

Yield Just the first element matching the predicate or Nothing if no such element exists.

findIndex :: Unbox a => (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 :: Unbox b => (a -> b -> a) -> a -> Vector b -> aSource

Left fold

foldl1 :: Unbox a => (a -> a -> a) -> Vector a -> aSource

Lefgt fold on non-empty vectors

foldl' :: Unbox b => (a -> b -> a) -> a -> Vector b -> aSource

Left fold with strict accumulator

foldl1' :: Unbox a => (a -> a -> a) -> Vector a -> aSource

Left fold on non-empty vectors with strict accumulator

foldr :: Unbox a => (a -> b -> b) -> b -> Vector a -> bSource

Right fold

foldr1 :: Unbox a => (a -> a -> a) -> Vector a -> aSource

Right fold on non-empty vectors

Specialised folds

sum :: (Unbox a, Num a) => Vector a -> aSource

product :: (Unbox a, Num a) => Vector a -> aSource

maximum :: (Unbox a, Ord a) => Vector a -> aSource

minimum :: (Unbox a, Ord a) => Vector a -> aSource

Unfolding

unfoldr :: Unbox a => (b -> Maybe (a, b)) -> b -> Vector aSource

Scans

prescanl :: (Unbox a, Unbox b) => (a -> b -> a) -> a -> Vector b -> Vector aSource

Prefix scan

prescanl' :: (Unbox a, Unbox b) => (a -> b -> a) -> a -> Vector b -> Vector aSource

Prefix scan with strict accumulator

Enumeration

enumFromTo :: (Unbox a, Enum a) => a -> a -> Vector aSource

enumFromThenTo :: (Unbox a, Enum a) => a -> a -> a -> Vector aSource

Conversion to/from lists

toList :: Unbox a => Vector a -> [a]Source

Convert a vector to a list

fromList :: Unbox a => [a] -> Vector aSource

Convert a list to a vector