rio-0.1.22.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) # mzipWith :: (a -> b -> c) -> Vector a -> Vector b -> Vector c # munzip :: Vector (a, b) -> (Vector a, Vector b) #
Eq1 Vector |
Instance details Defined in Data.Vector Methods liftEq :: (a -> b -> Bool) -> Vector a -> Vector b -> Bool #
Ord1 Vector |
Instance details Defined in Data.Vector Methods liftCompare :: (a -> b -> Ordering) -> Vector a -> Vector b -> Ordering #
Read1 Vector |
Instance details Defined in Data.Vector Methods liftReadsPrec :: (Int -> ReadS a) -> ReadS [a] -> Int -> ReadS (Vector a) # liftReadList :: (Int -> ReadS a) -> ReadS [a] -> ReadS [Vector a] # liftReadPrec :: ReadPrec a -> ReadPrec [a] -> ReadPrec (Vector a) # liftReadListPrec :: ReadPrec a -> ReadPrec [a] -> ReadPrec [Vector a] #
Show1 Vector |
Instance details Defined in Data.Vector Methods liftShowsPrec :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> Int -> Vector a -> ShowS # liftShowList :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> [Vector a] -> ShowS #
NFData1 Vector |
Instance details Defined in Data.Vector Methods liftRnf :: (a -> ()) -> Vector a -> () #
Alternative Vector |
Instance details Defined in Data.Vector Methods empty :: Vector a # (<|>) :: Vector a -> Vector a -> Vector a # some :: Vector a -> Vector [a] # many :: Vector a -> Vector [a] #
Applicative Vector |
Instance details Defined in Data.Vector Methods pure :: a -> Vector a # (<*>) :: Vector (a -> b) -> Vector a -> Vector b # liftA2 :: (a -> b -> c) -> Vector a -> Vector b -> Vector c # (*>) :: Vector a -> Vector b -> Vector b # (<*) :: Vector a -> Vector b -> Vector a #
Functor Vector |
Instance details Defined in Data.Vector Methods fmap :: (a -> b) -> Vector a -> Vector b # (<$) :: a -> Vector b -> Vector a #
Monad Vector |
Instance details Defined in Data.Vector Methods (>>=) :: Vector a -> (a -> Vector b) -> Vector b # (>>) :: Vector a -> Vector b -> Vector b # return :: a -> Vector a #
MonadPlus Vector |
Instance details Defined in Data.Vector Methods mzero :: Vector a # mplus :: Vector a -> Vector a -> Vector a #
MonadFail Vector |
Instance details Defined in Data.Vector Methods fail :: String -> Vector a #
MonadFix Vector |
Instance details Defined in Data.Vector Methods mfix :: (a -> Vector a) -> Vector a #
Foldable Vector |
Instance details Defined in Data.Vector Methods fold :: Monoid m => Vector m -> m # foldMap :: Monoid m => (a -> m) -> Vector a -> m # foldMap' :: Monoid m => (a -> m) -> Vector a -> m # foldr :: (a -> b -> b) -> b -> Vector a -> b # foldr' :: (a -> b -> b) -> b -> Vector a -> b # foldl :: (b -> a -> b) -> b -> Vector a -> b # foldl' :: (b -> a -> b) -> b -> Vector a -> b # foldr1 :: (a -> a -> a) -> Vector a -> a # foldl1 :: (a -> a -> a) -> Vector a -> a # toList :: Vector a -> [a] # null :: Vector a -> Bool # length :: Vector a -> Int # elem :: Eq a => a -> Vector a -> Bool # maximum :: Ord a => Vector a -> a # minimum :: Ord a => Vector a -> a # sum :: Num a => Vector a -> a # product :: Num a => Vector a -> a #
Traversable Vector |
Instance details Defined in Data.Vector Methods traverse :: Applicative f => (a -> f b) -> Vector a -> f (Vector b) # sequenceA :: Applicative f => Vector (f a) -> f (Vector a) # mapM :: Monad m => (a -> m b) -> Vector a -> m (Vector b) # sequence :: Monad m => Vector (m a) -> m (Vector a) #
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 -> () #
Monoid (Vector a) |
Instance details Defined in Data.Vector Methods mempty :: Vector a # mappend :: Vector a -> Vector a -> Vector a # mconcat :: [Vector a] -> Vector a #
Semigroup (Vector a) |
Instance details Defined in Data.Vector Methods (<>) :: Vector a -> Vector a -> Vector a # sconcat :: NonEmpty (Vector a) -> Vector a # stimes :: Integral b => b -> Vector a -> Vector a #
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) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Vector a) # toConstr :: Vector a -> Constr # dataTypeOf :: Vector a -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Vector a)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Vector a)) # gmapT :: (forall b. Data b => b -> b) -> Vector a -> Vector a # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Vector a -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Vector a -> r # gmapQ :: (forall d. Data d => d -> u) -> Vector a -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Vector a -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Vector a -> m (Vector a) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Vector a -> m (Vector a) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Vector a -> m (Vector a) #
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 # fromListN :: Int -> [Item (Vector a)] -> Vector a # toList :: Vector a -> [Item (Vector a)] #
Read a => Read (Vector a) |
Instance details Defined in Data.Vector Methods readsPrec :: Int -> ReadS (Vector a) # readList :: ReadS [Vector a] # readPrec :: ReadPrec (Vector a) # readListPrec :: ReadPrec [Vector a] #
Show a => Show (Vector a) |
Instance details Defined in Data.Vector Methods showsPrec :: Int -> Vector a -> ShowS # show :: Vector a -> String # showList :: [Vector a] -> ShowS #
Eq a => Eq (Vector a) |
Instance details Defined in Data.Vector Methods (==) :: Vector a -> Vector a -> Bool # (/=) :: Vector a -> Vector a -> Bool #
Ord a => Ord (Vector a) |
Instance details Defined in Data.Vector Methods compare :: Vector a -> Vector a -> Ordering # (<) :: Vector a -> Vector a -> Bool # (<=) :: Vector a -> Vector a -> Bool # (>) :: Vector a -> Vector a -> Bool # (>=) :: Vector a -> Vector a -> Bool # max :: Vector a -> Vector a -> Vector a # min :: Vector a -> Vector a -> Vector a #
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 () #