rio-0.1.24.0: A standard library for Haskell

Safe Haskell | None
Language | Haskell2010

RIO.Vector.Boxed

Contents

- Boxed vectors
- Accessors
  - Length information
  - Indexing
  - Extracting subvectors
- Construction
  - Initialisation
  - Monadic initialisation
  - Unfolding
  - Enumeration
  - Concatenation
  - Restricting memory usage
- Modifying vectors
  - Permutations
  - Safe destructive update
- Elementwise operations
  - Indexing
  - Mapping
  - Monadic mapping
  - Zipping
  - Monadic zipping
  - Unzipping
- Working with predicates
  - Filtering
  - Partitioning
  - Searching
- Folding
  - Specialised folds
  - Monadic folds
  - Monadic sequencing
- Prefix sums (scans)
- Conversions
  - Lists
  - Different vector types
  - Mutable vectors

Description

Boxed `Vector`. Import as:

    import qualified RIO.Vector.Boxed as VB

This module does not export any partial or unsafe functions. For those, see RIO.Vector.Boxed.Partial and RIO.Vector.Boxed.Unsafe

Synopsis

- data Vector a
- data MVector s a
- length :: Vector a -> Int
- null :: Vector a -> Bool
- (!?) :: Vector a -> Int -> Maybe a
- slice :: Int -> Int -> Vector a -> Vector a
- take :: Int -> Vector a -> Vector a
- drop :: Int -> Vector a -> Vector a
- splitAt :: Int -> Vector a -> (Vector a, Vector a)
- empty :: Vector a
- singleton :: a -> Vector a
- replicate :: Int -> a -> Vector a
- generate :: Int -> (Int -> a) -> Vector a
- iterateN :: Int -> (a -> a) -> a -> Vector a
- replicateM :: Monad m => Int -> m a -> m (Vector a)
- generateM :: Monad m => Int -> (Int -> m a) -> m (Vector a)
- iterateNM :: Monad m => Int -> (a -> m a) -> a -> m (Vector a)
- create :: (forall s. ST s (MVector s a)) -> Vector a
- createT :: Traversable f => (forall s. ST s (f (MVector s a))) -> f (Vector a)
- unfoldr :: (b -> Maybe (a, b)) -> b -> Vector a
- unfoldrN :: Int -> (b -> Maybe (a, b)) -> b -> Vector a
- unfoldrM :: Monad m => (b -> m (Maybe (a, b))) -> b -> m (Vector a)
- unfoldrNM :: Monad m => Int -> (b -> m (Maybe (a, b))) -> b -> m (Vector a)
- constructN :: Int -> (Vector a -> a) -> Vector a
- constructrN :: Int -> (Vector a -> a) -> Vector a
- enumFromN :: Num a => a -> Int -> Vector a
- enumFromStepN :: Num a => a -> a -> Int -> Vector a
- enumFromTo :: Enum a => a -> a -> Vector a
- enumFromThenTo :: Enum a => a -> a -> a -> Vector a
- cons :: a -> Vector a -> Vector a
- snoc :: Vector a -> a -> Vector a
- (++) :: Vector a -> Vector a -> Vector a
- concat :: [Vector a] -> Vector a
- force :: Vector a -> Vector a
- reverse :: Vector a -> Vector a
- modify :: (forall s. MVector s a -> ST s ()) -> Vector a -> Vector a
- indexed :: Vector a -> Vector (Int, a)
- map :: (a -> b) -> Vector a -> Vector b
- imap :: (Int -> a -> b) -> Vector a -> Vector b
- concatMap :: (a -> Vector b) -> Vector a -> Vector b
- mapM :: Monad m => (a -> m b) -> Vector a -> m (Vector b)
- imapM :: Monad m => (Int -> a -> m b) -> Vector a -> m (Vector b)
- mapM_ :: Monad m => (a -> m b) -> Vector a -> m ()
- imapM_ :: Monad m => (Int -> a -> m b) -> Vector a -> m ()
- forM :: Monad m => Vector a -> (a -> m b) -> m (Vector b)
- forM_ :: Monad m => Vector a -> (a -> m b) -> m ()
- zipWith :: (a -> b -> c) -> Vector a -> Vector b -> Vector c
- zipWith3 :: (a -> b -> c -> d) -> Vector a -> Vector b -> Vector c -> Vector d
- zipWith4 :: (a -> b -> c -> d -> e) -> Vector a -> Vector b -> Vector c -> Vector d -> Vector e
- zipWith5 :: (a -> b -> c -> d -> e -> f) -> Vector a -> Vector b -> Vector c -> Vector d -> Vector e -> Vector f
- zipWith6 :: (a -> b -> c -> d -> e -> f -> g) -> Vector a -> Vector b -> Vector c -> Vector d -> Vector e -> Vector f -> Vector g
- izipWith :: (Int -> a -> b -> c) -> Vector a -> Vector b -> Vector c
- izipWith3 :: (Int -> a -> b -> c -> d) -> Vector a -> Vector b -> Vector c -> Vector d
- izipWith4 :: (Int -> a -> b -> c -> d -> e) -> Vector a -> Vector b -> Vector c -> Vector d -> Vector e
- izipWith5 :: (Int -> a -> b -> c -> d -> e -> f) -> Vector a -> Vector b -> Vector c -> Vector d -> Vector e -> Vector f
- izipWith6 :: (Int -> a -> b -> c -> d -> e -> f -> g) -> Vector a -> Vector b -> Vector c -> Vector d -> Vector e -> Vector f -> Vector g
- zip :: Vector a -> Vector b -> Vector (a, b)
- zip3 :: Vector a -> Vector b -> Vector c -> Vector (a, b, c)
- zip4 :: Vector a -> Vector b -> Vector c -> Vector d -> Vector (a, b, c, d)
- zip5 :: Vector a -> Vector b -> Vector c -> Vector d -> Vector e -> Vector (a, b, c, d, e)
- zip6 :: Vector a -> Vector b -> Vector c -> Vector d -> Vector e -> Vector f -> Vector (a, b, c, d, e, f)
- zipWithM :: Monad m => (a -> b -> m c) -> Vector a -> Vector b -> m (Vector c)
- izipWithM :: Monad m => (Int -> a -> b -> m c) -> Vector a -> Vector b -> m (Vector c)
- zipWithM_ :: Monad m => (a -> b -> m c) -> Vector a -> Vector b -> m ()
- izipWithM_ :: Monad m => (Int -> a -> b -> m c) -> Vector a -> Vector b -> m ()
- unzip :: Vector (a, b) -> (Vector a, Vector b)
- unzip3 :: Vector (a, b, c) -> (Vector a, Vector b, Vector c)
- unzip4 :: Vector (a, b, c, d) -> (Vector a, Vector b, Vector c, Vector d)
- unzip5 :: Vector (a, b, c, d, e) -> (Vector a, Vector b, Vector c, Vector d, Vector e)
- unzip6 :: Vector (a, b, c, d, e, f) -> (Vector a, Vector b, Vector c, Vector d, Vector e, Vector f)
- filter :: (a -> Bool) -> Vector a -> Vector a
- ifilter :: (Int -> a -> Bool) -> Vector a -> Vector a
- uniq :: Eq a => Vector a -> Vector a
- mapMaybe :: (a -> Maybe b) -> Vector a -> Vector b
- imapMaybe :: (Int -> a -> Maybe b) -> Vector a -> Vector b
- filterM :: Monad m => (a -> m Bool) -> Vector a -> m (Vector a)
- takeWhile :: (a -> Bool) -> Vector a -> Vector a
- dropWhile :: (a -> Bool) -> Vector a -> Vector a
- partition :: (a -> Bool) -> Vector a -> (Vector a, Vector a)
- unstablePartition :: (a -> Bool) -> Vector a -> (Vector a, Vector a)
- span :: (a -> Bool) -> Vector a -> (Vector a, Vector a)
- break :: (a -> Bool) -> Vector a -> (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
- findIndices :: (a -> Bool) -> Vector a -> Vector Int
- elemIndex :: Eq a => a -> Vector a -> Maybe Int
- elemIndices :: Eq a => a -> Vector a -> Vector Int
- foldl :: (a -> b -> a) -> a -> Vector b -> a
- foldl' :: (a -> b -> a) -> a -> Vector b -> a
- foldr :: (a -> b -> b) -> b -> Vector a -> b
- foldr' :: (a -> b -> b) -> b -> Vector a -> b
- ifoldl :: (a -> Int -> b -> a) -> a -> Vector b -> a
- ifoldl' :: (a -> Int -> b -> a) -> a -> Vector b -> a
- ifoldr :: (Int -> a -> b -> b) -> b -> Vector a -> b
- ifoldr' :: (Int -> a -> b -> b) -> b -> Vector a -> b
- all :: (a -> Bool) -> Vector a -> Bool
- any :: (a -> Bool) -> Vector a -> Bool
- and :: Vector Bool -> Bool
- or :: Vector Bool -> Bool
- sum :: Num a => Vector a -> a
- product :: Num a => Vector a -> a
- foldM :: Monad m => (a -> b -> m a) -> a -> Vector b -> m a
- ifoldM :: Monad m => (a -> Int -> b -> m a) -> a -> Vector b -> m a
- foldM' :: Monad m => (a -> b -> m a) -> a -> Vector b -> m a
- ifoldM' :: Monad m => (a -> Int -> b -> m a) -> a -> Vector b -> m a
- foldM_ :: Monad m => (a -> b -> m a) -> a -> Vector b -> m ()
- ifoldM_ :: Monad m => (a -> Int -> b -> m a) -> a -> Vector b -> m ()
- foldM'_ :: Monad m => (a -> b -> m a) -> a -> Vector b -> m ()
- ifoldM'_ :: Monad m => (a -> Int -> b -> m a) -> a -> Vector b -> m ()
- sequence :: Monad m => Vector (m a) -> m (Vector a)
- sequence_ :: Monad m => Vector (m a) -> m ()
- 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
- iscanl :: (Int -> a -> b -> a) -> a -> Vector b -> Vector a
- iscanl' :: (Int -> a -> b -> a) -> a -> Vector b -> Vector a
- prescanr :: (a -> b -> b) -> b -> Vector a -> Vector b
- prescanr' :: (a -> b -> b) -> b -> Vector a -> Vector b
- postscanr :: (a -> b -> b) -> b -> Vector a -> Vector b
- postscanr' :: (a -> b -> b) -> b -> Vector a -> Vector b
- scanr :: (a -> b -> b) -> b -> Vector a -> Vector b
- scanr' :: (a -> b -> b) -> b -> Vector a -> Vector b
- iscanr :: (Int -> a -> b -> b) -> b -> Vector a -> Vector b
- iscanr' :: (Int -> a -> b -> b) -> b -> Vector a -> Vector b
- toList :: Vector a -> [a]
- fromList :: [a] -> Vector a
- fromListN :: Int -> [a] -> Vector a
- convert :: (Vector v a, Vector w a) => v a -> w a
- freeze :: PrimMonad m => MVector (PrimState m) a -> m (Vector a)
- thaw :: PrimMonad m => Vector a -> m (MVector (PrimState m) a)
- copy :: PrimMonad m => MVector (PrimState m) a -> Vector a -> m ()

# Boxed vectors

data Vector a #

#### Instances

Instances details

MonadZip Vector |
Instance details Defined in Data.Vector Methods mzip :: Vector a -> Vector b -> Vector (a, b) Source # mzipWith :: (a -> b -> c) -> Vector a -> Vector b -> Vector c Source # munzip :: Vector (a, b) -> (Vector a, Vector b) Source #
Eq1 Vector |
Instance details Defined in Data.Vector Methods liftEq :: (a -> b -> Bool) -> Vector a -> Vector b -> Bool Source #
Ord1 Vector |
Instance details Defined in Data.Vector Methods liftCompare :: (a -> b -> Ordering) -> Vector a -> Vector b -> Ordering Source #
Read1 Vector |
Instance details Defined in Data.Vector Methods liftReadsPrec :: (Int -> ReadS a) -> ReadS [a] -> Int -> ReadS (Vector a) Source # liftReadList :: (Int -> ReadS a) -> ReadS [a] -> ReadS [Vector a] Source # liftReadPrec :: ReadPrec a -> ReadPrec [a] -> ReadPrec (Vector a) Source # liftReadListPrec :: ReadPrec a -> ReadPrec [a] -> ReadPrec [Vector a] Source #
Show1 Vector |
Instance details Defined in Data.Vector Methods liftShowsPrec :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> Int -> Vector a -> ShowS Source # liftShowList :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> [Vector a] -> ShowS Source #
NFData1 Vector |
Instance details Defined in Data.Vector Methods liftRnf :: (a -> ()) -> Vector a -> () Source #
Alternative Vector |
Instance details Defined in Data.Vector Methods empty :: Vector a Source # (<|>) :: Vector a -> Vector a -> Vector a Source # some :: Vector a -> Vector [a] Source # many :: Vector a -> Vector [a] Source #
Applicative Vector |
Instance details Defined in Data.Vector Methods pure :: a -> Vector a Source # (<*>) :: Vector (a -> b) -> Vector a -> Vector b Source # liftA2 :: (a -> b -> c) -> Vector a -> Vector b -> Vector c Source # (*>) :: Vector a -> Vector b -> Vector b Source # (<*) :: Vector a -> Vector b -> Vector a Source #
Functor Vector |
Instance details Defined in Data.Vector Methods fmap :: (a -> b) -> Vector a -> Vector b Source # (<$) :: a -> Vector b -> Vector a Source #
Monad Vector |
Instance details Defined in Data.Vector Methods (>>=) :: Vector a -> (a -> Vector b) -> Vector b Source # (>>) :: Vector a -> Vector b -> Vector b Source # return :: a -> Vector a Source #
MonadPlus Vector |
Instance details Defined in Data.Vector Methods mzero :: Vector a Source # mplus :: Vector a -> Vector a -> Vector a Source #
MonadFail Vector |
Instance details Defined in Data.Vector Methods fail :: String -> Vector a Source #
MonadFix Vector |
Instance details Defined in Data.Vector Methods mfix :: (a -> Vector a) -> Vector a Source #
Foldable Vector |

Instance details

Defined in Data.Vector

Methods

fold :: Monoid m => Vector m -> m Source #

foldMap :: Monoid m => (a -> m) -> Vector a -> m Source #

foldMap' :: Monoid m => (a -> m) -> Vector a -> m Source #

foldr :: (a -> b -> b) -> b -> Vector a -> b Source #

foldr' :: (a -> b -> b) -> b -> Vector a -> b Source #

foldl :: (b -> a -> b) -> b -> Vector a -> b Source #

foldl' :: (b -> a -> b) -> b -> Vector a -> b Source #

foldr1 :: (a -> a -> a) -> Vector a -> a Source #

foldl1 :: (a -> a -> a) -> Vector a -> a Source #

toList :: Vector a -> [a] Source #

null :: Vector a -> Bool Source #

length :: Vector a -> Int Source #

elem :: Eq a => a -> Vector a -> Bool Source #

maximum :: Ord a => Vector a -> a Source #

minimum :: Ord a => Vector a -> a Source #

sum :: Num a => Vector a -> a Source #

product :: Num a => Vector a -> a Source #

Traversable Vector |
Instance details Defined in Data.Vector Methods traverse :: Applicative f => (a -> f b) -> Vector a -> f (Vector b) Source # sequenceA :: Applicative f => Vector (f a) -> f (Vector a) Source # mapM :: Monad m => (a -> m b) -> Vector a -> m (Vector b) Source # sequence :: Monad m => Vector (m a) -> m (Vector a) Source #
Vector Vector a |

Instance details

Defined in Data.Vector

Methods

basicUnsafeFreeze :: Mutable Vector s a -> ST s (Vector a) #

basicUnsafeThaw :: Vector a -> ST s (Mutable Vector s a) #

basicLength :: Vector a -> Int #

basicUnsafeSlice :: Int -> Int -> Vector a -> Vector a #

basicUnsafeIndexM :: Vector a -> Int -> Box a #

basicUnsafeCopy :: Mutable Vector s a -> Vector a -> ST s () #

elemseq :: Vector a -> a -> b -> b #

NFData a => NFData (Vector a) |
Instance details Defined in Data.Vector Methods rnf :: Vector a -> () Source #
Monoid (Vector a) |
Instance details Defined in Data.Vector Methods mempty :: Vector a Source # mappend :: Vector a -> Vector a -> Vector a Source # mconcat :: [Vector a] -> Vector a Source #
Semigroup (Vector a) |
Instance details Defined in Data.Vector Methods (<>) :: Vector a -> Vector a -> Vector a Source # sconcat :: NonEmpty (Vector a) -> Vector a Source # stimes :: Integral b => b -> Vector a -> Vector a Source #
Data a => Data (Vector a) |

Instance details

Defined in Data.Vector

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Vector a -> c (Vector a) Source #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Vector a) Source #

toConstr :: Vector a -> Constr Source #

dataTypeOf :: Vector a -> DataType Source #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Vector a)) Source #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Vector a)) Source #

gmapT :: (forall b. Data b => b -> b) -> Vector a -> Vector a Source #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Vector a -> r Source #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Vector a -> r Source #

gmapQ :: (forall d. Data d => d -> u) -> Vector a -> [u] Source #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Vector a -> u Source #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Vector a -> m (Vector a) Source #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Vector a -> m (Vector a) Source #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Vector a -> m (Vector a) Source #

IsList (Vector a) |

Instance details

Defined in Data.Vector

Associated Types

type Item (Vector a) |
Instance details Defined in Data.Vector type Item (Vector a) = a

Methods

fromList :: [Item (Vector a)] -> Vector a Source #

fromListN :: Int -> [Item (Vector a)] -> Vector a Source #

toList :: Vector a -> [Item (Vector a)] Source #

Read a => Read (Vector a) |
Instance details Defined in Data.Vector Methods readsPrec :: Int -> ReadS (Vector a) Source # readList :: ReadS [Vector a] Source # readPrec :: ReadPrec (Vector a) Source # readListPrec :: ReadPrec [Vector a] Source #
Show a => Show (Vector a) |
Instance details Defined in Data.Vector Methods showsPrec :: Int -> Vector a -> ShowS Source # show :: Vector a -> String Source # showList :: [Vector a] -> ShowS Source #
Eq a => Eq (Vector a) |
Instance details Defined in Data.Vector Methods (==) :: Vector a -> Vector a -> Bool Source # (/=) :: Vector a -> Vector a -> Bool Source #
Ord a => Ord (Vector a) |
Instance details Defined in Data.Vector Methods compare :: Vector a -> Vector a -> Ordering Source # (<) :: Vector a -> Vector a -> Bool Source # (<=) :: Vector a -> Vector a -> Bool Source # (>) :: Vector a -> Vector a -> Bool Source # (>=) :: Vector a -> Vector a -> Bool Source # max :: Vector a -> Vector a -> Vector a Source # min :: Vector a -> Vector a -> Vector a Source #
type Mutable Vector |
Instance details Defined in Data.Vector type Mutable Vector = MVector
type Item (Vector a) |
Instance details Defined in Data.Vector type Item (Vector a) = a

data MVector s a #

#### Instances

Instances details

MVector MVector a |

Instance details

Defined in Data.Vector.Mutable

Methods

basicLength :: MVector s a -> Int

basicUnsafeSlice :: Int -> Int -> MVector s a -> MVector s a

basicOverlaps :: MVector s a -> MVector s a -> Bool

basicUnsafeNew :: Int -> ST s (MVector s a)

basicInitialize :: MVector s a -> ST s ()

basicUnsafeReplicate :: Int -> a -> ST s (MVector s a)

basicUnsafeRead :: MVector s a -> Int -> ST s a

basicUnsafeWrite :: MVector s a -> Int -> a -> ST s ()

basicClear :: MVector s a -> ST s ()

basicSet :: MVector s a -> a -> ST s ()

basicUnsafeCopy :: MVector s a -> MVector s a -> ST s ()

basicUnsafeMove :: MVector s a -> MVector s a -> ST s ()

basicUnsafeGrow :: MVector s a -> Int -> ST s (MVector s a)

# Accessors

## Length information

length :: Vector a -> Int #

null :: Vector a -> Bool #

## Indexing

(!?) :: Vector a -> Int -> Maybe a #

## Extracting subvectors

slice :: Int -> Int -> Vector a -> Vector a #

take :: Int -> Vector a -> Vector a #

drop :: Int -> Vector a -> Vector a #

splitAt :: Int -> Vector a -> (Vector a, Vector a) #

# Construction

## Initialisation

empty :: Vector a #

singleton :: a -> Vector a #

replicate :: Int -> a -> Vector a #

generate :: Int -> (Int -> a) -> Vector a #

iterateN :: Int -> (a -> a) -> a -> Vector a #

## Monadic initialisation

replicateM :: Monad m => Int -> m a -> m (Vector a) #

generateM :: Monad m => Int -> (Int -> m a) -> m (Vector a) #

iterateNM :: Monad m => Int -> (a -> m a) -> a -> m (Vector a) #

create :: (forall s. ST s (MVector s a)) -> Vector a #

createT :: Traversable f => (forall s. ST s (f (MVector s a))) -> f (Vector a) #

## Unfolding

unfoldr :: (b -> Maybe (a, b)) -> b -> Vector a #

unfoldrN :: Int -> (b -> Maybe (a, b)) -> b -> Vector a #

unfoldrM :: Monad m => (b -> m (Maybe (a, b))) -> b -> m (Vector a) #

unfoldrNM :: Monad m => Int -> (b -> m (Maybe (a, b))) -> b -> m (Vector a) #

constructN :: Int -> (Vector a -> a) -> Vector a #

constructrN :: Int -> (Vector a -> a) -> Vector a #

## Enumeration

enumFromN :: Num a => a -> Int -> Vector a #

enumFromStepN :: Num a => a -> a -> Int -> Vector a #

enumFromTo :: Enum a => a -> a -> Vector a #

enumFromThenTo :: Enum a => a -> a -> a -> Vector a #

## Concatenation

cons :: a -> Vector a -> Vector a #

snoc :: Vector a -> a -> Vector a #

(++) :: Vector a -> Vector a -> Vector a #

concat :: [Vector a] -> Vector a #

## Restricting memory usage

force :: Vector a -> Vector a #

# Modifying vectors

## Permutations

reverse :: Vector a -> Vector a #

## Safe destructive update

modify :: (forall s. MVector s a -> ST s ()) -> Vector a -> Vector a #

# Elementwise operations

## Indexing

indexed :: Vector a -> Vector (Int, a) #

## Mapping

map :: (a -> b) -> Vector a -> Vector b #

imap :: (Int -> a -> b) -> Vector a -> Vector b #

concatMap :: (a -> Vector b) -> Vector a -> Vector b #

## Monadic mapping

mapM :: Monad m => (a -> m b) -> Vector a -> m (Vector b) #

imapM :: Monad m => (Int -> a -> m b) -> Vector a -> m (Vector b) #

mapM_ :: Monad m => (a -> m b) -> Vector a -> m () #

imapM_ :: Monad m => (Int -> a -> m b) -> Vector a -> m () #

forM :: Monad m => Vector a -> (a -> m b) -> m (Vector b) #

forM_ :: Monad m => Vector a -> (a -> m b) -> m () #

## Zipping

zipWith :: (a -> b -> c) -> Vector a -> Vector b -> Vector c #

zipWith3 :: (a -> b -> c -> d) -> Vector a -> Vector b -> Vector c -> Vector d #

zipWith4 :: (a -> b -> c -> d -> e) -> Vector a -> Vector b -> Vector c -> Vector d -> Vector e #

zipWith5 :: (a -> b -> c -> d -> e -> f) -> Vector a -> Vector b -> Vector c -> Vector d -> Vector e -> Vector f #

zipWith6 :: (a -> b -> c -> d -> e -> f -> g) -> Vector a -> Vector b -> Vector c -> Vector d -> Vector e -> Vector f -> Vector g #

izipWith :: (Int -> a -> b -> c) -> Vector a -> Vector b -> Vector c #

izipWith3 :: (Int -> a -> b -> c -> d) -> Vector a -> Vector b -> Vector c -> Vector d #

izipWith4 :: (Int -> a -> b -> c -> d -> e) -> Vector a -> Vector b -> Vector c -> Vector d -> Vector e #

izipWith5 :: (Int -> a -> b -> c -> d -> e -> f) -> Vector a -> Vector b -> Vector c -> Vector d -> Vector e -> Vector f #

izipWith6 :: (Int -> a -> b -> c -> d -> e -> f -> g) -> Vector a -> Vector b -> Vector c -> Vector d -> Vector e -> Vector f -> Vector g #

zip :: Vector a -> Vector b -> Vector (a, b) #

zip3 :: Vector a -> Vector b -> Vector c -> Vector (a, b, c) #

zip4 :: Vector a -> Vector b -> Vector c -> Vector d -> Vector (a, b, c, d) #

zip5 :: Vector a -> Vector b -> Vector c -> Vector d -> Vector e -> Vector (a, b, c, d, e) #

zip6 :: Vector a -> Vector b -> Vector c -> Vector d -> Vector e -> Vector f -> Vector (a, b, c, d, e, f) #

## Monadic zipping

zipWithM :: Monad m => (a -> b -> m c) -> Vector a -> Vector b -> m (Vector c) #

izipWithM :: Monad m => (Int -> a -> b -> m c) -> Vector a -> Vector b -> m (Vector c) #

zipWithM_ :: Monad m => (a -> b -> m c) -> Vector a -> Vector b -> m () #

izipWithM_ :: Monad m => (Int -> a -> b -> m c) -> Vector a -> Vector b -> m () #

## Unzipping

unzip :: Vector (a, b) -> (Vector a, Vector b) #

unzip3 :: Vector (a, b, c) -> (Vector a, Vector b, Vector c) #

unzip4 :: Vector (a, b, c, d) -> (Vector a, Vector b, Vector c, Vector d) #

unzip5 :: Vector (a, b, c, d, e) -> (Vector a, Vector b, Vector c, Vector d, Vector e) #

unzip6 :: Vector (a, b, c, d, e, f) -> (Vector a, Vector b, Vector c, Vector d, Vector e, Vector f) #

# Working with predicates

## Filtering

filter :: (a -> Bool) -> Vector a -> Vector a #

ifilter :: (Int -> a -> Bool) -> Vector a -> Vector a #

uniq :: Eq a => Vector a -> Vector a #

mapMaybe :: (a -> Maybe b) -> Vector a -> Vector b #

imapMaybe :: (Int -> a -> Maybe b) -> Vector a -> Vector b #

filterM :: Monad m => (a -> m Bool) -> Vector a -> m (Vector a) #

takeWhile :: (a -> Bool) -> Vector a -> Vector a #

dropWhile :: (a -> Bool) -> Vector a -> Vector a #

## Partitioning

partition :: (a -> Bool) -> Vector a -> (Vector a, Vector a) #

unstablePartition :: (a -> Bool) -> Vector a -> (Vector a, Vector a) #

span :: (a -> Bool) -> Vector a -> (Vector a, Vector a) #

break :: (a -> Bool) -> Vector a -> (Vector a, Vector a) #

## Searching

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 #

findIndices :: (a -> Bool) -> Vector a -> Vector Int #

elemIndex :: Eq a => a -> Vector a -> Maybe Int #

elemIndices :: Eq a => a -> Vector a -> Vector Int #

# Folding

foldl :: (a -> b -> a) -> a -> Vector b -> a #

foldl' :: (a -> b -> a) -> a -> Vector b -> a #

foldr :: (a -> b -> b) -> b -> Vector a -> b #

foldr' :: (a -> b -> b) -> b -> Vector a -> b #

ifoldl :: (a -> Int -> b -> a) -> a -> Vector b -> a #

ifoldl' :: (a -> Int -> b -> a) -> a -> Vector b -> a #

ifoldr :: (Int -> a -> b -> b) -> b -> Vector a -> b #

ifoldr' :: (Int -> a -> b -> b) -> b -> Vector a -> b #

## Specialised folds

all :: (a -> Bool) -> Vector a -> Bool #

any :: (a -> Bool) -> Vector a -> Bool #

and :: Vector Bool -> Bool #

or :: Vector Bool -> Bool #

sum :: Num a => Vector a -> a #

product :: Num a => Vector a -> a #

## Monadic folds

foldM :: Monad m => (a -> b -> m a) -> a -> Vector b -> m a #

ifoldM :: Monad m => (a -> Int -> b -> m a) -> a -> Vector b -> m a #

foldM' :: Monad m => (a -> b -> m a) -> a -> Vector b -> m a #

ifoldM' :: Monad m => (a -> Int -> b -> m a) -> a -> Vector b -> m a #

foldM_ :: Monad m => (a -> b -> m a) -> a -> Vector b -> m () #

ifoldM_ :: Monad m => (a -> Int -> b -> m a) -> a -> Vector b -> m () #

foldM'_ :: Monad m => (a -> b -> m a) -> a -> Vector b -> m () #

ifoldM'_ :: Monad m => (a -> Int -> b -> m a) -> a -> Vector b -> m () #

## Monadic sequencing

sequence :: Monad m => Vector (m a) -> m (Vector a) #

sequence_ :: Monad m => Vector (m a) -> m () #

# Prefix sums (scans)

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 #

iscanl :: (Int -> a -> b -> a) -> a -> Vector b -> Vector a #

iscanl' :: (Int -> a -> b -> a) -> a -> Vector b -> Vector a #

prescanr :: (a -> b -> b) -> b -> Vector a -> Vector b #

prescanr' :: (a -> b -> b) -> b -> Vector a -> Vector b #

postscanr :: (a -> b -> b) -> b -> Vector a -> Vector b #

postscanr' :: (a -> b -> b) -> b -> Vector a -> Vector b #

scanr :: (a -> b -> b) -> b -> Vector a -> Vector b #

scanr' :: (a -> b -> b) -> b -> Vector a -> Vector b #

iscanr :: (Int -> a -> b -> b) -> b -> Vector a -> Vector b #

iscanr' :: (Int -> a -> b -> b) -> b -> Vector a -> Vector b #

# Conversions

## Lists

toList :: Vector a -> [a] #

fromList :: [a] -> Vector a #

fromListN :: Int -> [a] -> Vector a #

## Different vector types

convert :: (Vector v a, Vector w a) => v a -> w a #

## Mutable vectors

freeze :: PrimMonad m => MVector (PrimState m) a -> m (Vector a) #

thaw :: PrimMonad m => Vector a -> m (MVector (PrimState m) a) #

copy :: PrimMonad m => MVector (PrimState m) a -> Vector a -> m () #