{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE Rank2Types #-}
{-# LANGUAGE Trustworthy #-}
module Data.Vector.NonEmpty
(
NonEmptyVector
, length
, head, last, (!), (!?)
, unsafeIndex
, headM, lastM, indexM, unsafeIndexM
, tail, slice, init, take, drop
, uncons, unsnoc, splitAt
, unsafeSlice, unsafeTake, unsafeDrop
, singleton
, replicate, replicate1
, generate, generate1
, iterateN, iterateN1
, replicateM, replicate1M
, generateM, generate1M
, iterateNM, iterateN1M
, create, unsafeCreate
, createT, unsafeCreateT
, unfoldr, unfoldr1
, unfoldrN, unfoldr1N
, unfoldrM, unfoldr1M
, unfoldrNM, unfoldr1NM
, constructN, constructrN
, enumFromN, enumFromN1
, enumFromStepN, enumFromStepN1
, enumFromTo, enumFromThenTo
, cons, consV, snoc, snocV, (++), concat, concat1
, force
, toNonEmpty, fromNonEmpty
, fromNonEmptyN, fromNonEmptyN1
, unsafeFromList
, toVector, fromVector, unsafeFromVector
, toList, fromList, fromListN
, (//), update, update_
, unsafeUpd, unsafeUpdate, unsafeUpdate_
, accum, accumulate, accumulate_
, unsafeAccum, unsafeAccumulate, unsafeAccumulate_
, reverse, backpermute, unsafeBackpermute
, modify
, indexed
, map, imap, concatMap
, mapM, imapM, mapM_, imapM_
, forM, forM_
, zipWith, zipWith3, zipWith4, zipWith5, zipWith6
, izipWith, izipWith3, izipWith4, izipWith5, izipWith6
, zip, zip3, zip4, zip5, zip6
, zipWithM, zipWithM_, izipWithM, izipWithM_
, unzip, unzip3, unzip4, unzip5, unzip6
, uniq, mapMaybe, imapMaybe
, filter, ifilter, filterM, ifilterM
, takeWhile, dropWhile
, partition, unstablePartition, span, break
, elem, notElem, find, findIndex, findIndices, elemIndex
, elemIndices
, foldl, foldl1, foldl', foldl1'
, foldr, foldr1, foldr', foldr1'
, ifoldl, ifoldl', ifoldr, ifoldr'
, all, any, and, or, sum, product
, maximum, maximumBy, minimum, minimumBy
, maxIndex, maxIndexBy, minIndex, minIndexBy
, foldM, foldM', fold1M, fold1M', foldM_, foldM'_, fold1M_
, fold1M'_, ifoldM, ifoldM', ifoldM_, ifoldM'_
, sequence, sequence_
, prescanl, prescanl', postscanl, postscanl'
, scanl, scanl', scanl1, scanl1', iscanl, iscanl'
, prescanr, prescanr', postscanr, postscanr'
, scanr, scanr', scanr1, scanr1', iscanr, iscanr'
) where
import Prelude ( Bool, Eq, Ord, Num, Enum
, (.), Ordering, max, uncurry, snd)
import Control.Monad (Monad)
import Control.Monad.ST
import qualified Data.Foldable as Foldable
import Data.Functor
import Data.Int
import Data.List.NonEmpty (NonEmpty(..))
import qualified Data.List.NonEmpty as NonEmpty
import Data.Maybe (Maybe(..))
import Data.Semigroup (Semigroup(..), (<>))
import Data.Traversable (Traversable)
import Data.Vector (Vector)
import qualified Data.Vector as V
import qualified Data.Vector.Generic as G
import Data.Vector.Mutable (MVector)
import Data.Vector.NonEmpty.Internal
length :: NonEmptyVector a -> Int
length :: NonEmptyVector a -> Int
length = Vector a -> Int
forall a. Vector a -> Int
V.length (Vector a -> Int)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE length #-}
head :: NonEmptyVector a -> a
head :: NonEmptyVector a -> a
head = Vector a -> a
forall a. Vector a -> a
V.unsafeHead (Vector a -> a)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE head #-}
last :: NonEmptyVector a -> a
last :: NonEmptyVector a -> a
last = Vector a -> a
forall a. Vector a -> a
V.unsafeLast (Vector a -> a)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE last #-}
(!) :: NonEmptyVector a -> Int -> a
(!) (NonEmptyVector Vector a
as) Int
n = Vector a
as Vector a -> Int -> a
forall a. Vector a -> Int -> a
V.! Int
n
{-# INLINE (!) #-}
(!?) :: NonEmptyVector a -> Int -> Maybe a
(NonEmptyVector Vector a
as) !? :: NonEmptyVector a -> Int -> Maybe a
!? Int
n = Vector a
as Vector a -> Int -> Maybe a
forall a. Vector a -> Int -> Maybe a
V.!? Int
n
{-# INLINE (!?) #-}
unsafeIndex :: NonEmptyVector a -> Int -> a
unsafeIndex :: NonEmptyVector a -> Int -> a
unsafeIndex (NonEmptyVector Vector a
as) Int
n = Vector a -> Int -> a
forall a. Vector a -> Int -> a
V.unsafeIndex Vector a
as Int
n
{-# INLINE unsafeIndex #-}
indexM :: Monad m => NonEmptyVector a -> Int -> m a
indexM :: NonEmptyVector a -> Int -> m a
indexM (NonEmptyVector Vector a
v) Int
n = Vector a -> Int -> m a
forall (m :: * -> *) a. Monad m => Vector a -> Int -> m a
V.indexM Vector a
v Int
n
{-# INLINE indexM #-}
headM :: Monad m => NonEmptyVector a -> m a
headM :: NonEmptyVector a -> m a
headM (NonEmptyVector Vector a
v) = Vector a -> m a
forall (m :: * -> *) a. Monad m => Vector a -> m a
V.unsafeHeadM Vector a
v
{-# INLINE headM #-}
lastM :: Monad m => NonEmptyVector a -> m a
lastM :: NonEmptyVector a -> m a
lastM (NonEmptyVector Vector a
v) = Vector a -> m a
forall (m :: * -> *) a. Monad m => Vector a -> m a
V.unsafeLastM Vector a
v
{-# INLINE lastM #-}
unsafeIndexM :: Monad m => NonEmptyVector a -> Int -> m a
unsafeIndexM :: NonEmptyVector a -> Int -> m a
unsafeIndexM (NonEmptyVector Vector a
v) Int
n = Vector a -> Int -> m a
forall (m :: * -> *) a. Monad m => Vector a -> Int -> m a
V.unsafeIndexM Vector a
v Int
n
{-# INLINE unsafeIndexM #-}
tail :: NonEmptyVector a -> Vector a
tail :: NonEmptyVector a -> Vector a
tail = Vector a -> Vector a
forall a. Vector a -> Vector a
V.unsafeTail (Vector a -> Vector a)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> Vector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE tail #-}
uncons :: NonEmptyVector a -> (a, Vector a)
uncons :: NonEmptyVector a -> (a, Vector a)
uncons NonEmptyVector a
v = (NonEmptyVector a -> a
forall a. NonEmptyVector a -> a
head NonEmptyVector a
v, NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
tail NonEmptyVector a
v)
{-# INLINE uncons #-}
unsnoc :: NonEmptyVector a -> (Vector a, a)
unsnoc :: NonEmptyVector a -> (Vector a, a)
unsnoc NonEmptyVector a
v = (NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
init NonEmptyVector a
v, NonEmptyVector a -> a
forall a. NonEmptyVector a -> a
last NonEmptyVector a
v)
{-# INLINE unsnoc #-}
slice :: Int -> Int -> NonEmptyVector a -> Vector a
slice :: Int -> Int -> NonEmptyVector a -> Vector a
slice Int
i Int
n = Int -> Int -> Vector a -> Vector a
forall a. Int -> Int -> Vector a -> Vector a
V.slice Int
i Int
n (Vector a -> Vector a)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> Vector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE slice #-}
init :: NonEmptyVector a -> Vector a
init :: NonEmptyVector a -> Vector a
init = Vector a -> Vector a
forall a. Vector a -> Vector a
V.unsafeInit (Vector a -> Vector a)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> Vector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE init #-}
take :: Int -> NonEmptyVector a -> Vector a
take :: Int -> NonEmptyVector a -> Vector a
take Int
n = Int -> Vector a -> Vector a
forall a. Int -> Vector a -> Vector a
V.take Int
n (Vector a -> Vector a)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> Vector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE take #-}
drop :: Int -> NonEmptyVector a -> Vector a
drop :: Int -> NonEmptyVector a -> Vector a
drop Int
n = Int -> Vector a -> Vector a
forall a. Int -> Vector a -> Vector a
V.drop Int
n (Vector a -> Vector a)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> Vector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE drop #-}
splitAt :: Int -> NonEmptyVector a -> (Vector a, Vector a)
splitAt :: Int -> NonEmptyVector a -> (Vector a, Vector a)
splitAt Int
n = Int -> Vector a -> (Vector a, Vector a)
forall a. Int -> Vector a -> (Vector a, Vector a)
V.splitAt Int
n (Vector a -> (Vector a, Vector a))
-> (NonEmptyVector a -> Vector a)
-> NonEmptyVector a
-> (Vector a, Vector a)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE splitAt #-}
unsafeSlice :: Int -> Int -> NonEmptyVector a -> Vector a
unsafeSlice :: Int -> Int -> NonEmptyVector a -> Vector a
unsafeSlice Int
i Int
n = Int -> Int -> Vector a -> Vector a
forall a. Int -> Int -> Vector a -> Vector a
V.unsafeSlice Int
i Int
n (Vector a -> Vector a)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> Vector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE unsafeSlice #-}
unsafeTake :: Int -> NonEmptyVector a -> Vector a
unsafeTake :: Int -> NonEmptyVector a -> Vector a
unsafeTake Int
n = Int -> Vector a -> Vector a
forall a. Int -> Vector a -> Vector a
V.unsafeTake Int
n (Vector a -> Vector a)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> Vector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE unsafeTake #-}
unsafeDrop :: Int -> NonEmptyVector a -> Vector a
unsafeDrop :: Int -> NonEmptyVector a -> Vector a
unsafeDrop Int
n = Int -> Vector a -> Vector a
forall a. Int -> Vector a -> Vector a
V.unsafeDrop Int
n (Vector a -> Vector a)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> Vector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE unsafeDrop #-}
singleton :: a -> NonEmptyVector a
singleton :: a -> NonEmptyVector a
singleton = Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
NonEmptyVector (Vector a -> NonEmptyVector a)
-> (a -> Vector a) -> a -> NonEmptyVector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> Vector a
forall a. a -> Vector a
V.singleton
{-# INLINE singleton #-}
replicate :: Int -> a -> Maybe (NonEmptyVector a)
replicate :: Int -> a -> Maybe (NonEmptyVector a)
replicate Int
n a
a = Vector a -> Maybe (NonEmptyVector a)
forall a. Vector a -> Maybe (NonEmptyVector a)
fromVector (Int -> a -> Vector a
forall a. Int -> a -> Vector a
V.replicate Int
n a
a)
{-# INLINE replicate #-}
replicate1 :: Int -> a -> NonEmptyVector a
replicate1 :: Int -> a -> NonEmptyVector a
replicate1 Int
n a
a = Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
unsafeFromVector (Int -> a -> Vector a
forall a. Int -> a -> Vector a
V.replicate (Int -> Int -> Int
forall a. Ord a => a -> a -> a
max Int
n Int
1) a
a)
{-# INLINE replicate1 #-}
generate :: Int -> (Int -> a) -> Maybe (NonEmptyVector a)
generate :: Int -> (Int -> a) -> Maybe (NonEmptyVector a)
generate Int
n Int -> a
f = Vector a -> Maybe (NonEmptyVector a)
forall a. Vector a -> Maybe (NonEmptyVector a)
fromVector (Int -> (Int -> a) -> Vector a
forall a. Int -> (Int -> a) -> Vector a
V.generate Int
n Int -> a
f)
{-# INLINE generate #-}
generate1 :: Int -> (Int -> a) -> NonEmptyVector a
generate1 :: Int -> (Int -> a) -> NonEmptyVector a
generate1 Int
n Int -> a
f = Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
unsafeFromVector (Int -> (Int -> a) -> Vector a
forall a. Int -> (Int -> a) -> Vector a
V.generate (Int -> Int -> Int
forall a. Ord a => a -> a -> a
max Int
n Int
1) Int -> a
f)
{-# INLINE generate1 #-}
iterateN :: Int -> (a -> a) -> a -> Maybe (NonEmptyVector a)
iterateN :: Int -> (a -> a) -> a -> Maybe (NonEmptyVector a)
iterateN Int
n a -> a
f a
a = Vector a -> Maybe (NonEmptyVector a)
forall a. Vector a -> Maybe (NonEmptyVector a)
fromVector (Int -> (a -> a) -> a -> Vector a
forall a. Int -> (a -> a) -> a -> Vector a
V.iterateN Int
n a -> a
f a
a)
{-# INLINE iterateN #-}
iterateN1 :: Int -> (a -> a) -> a -> NonEmptyVector a
iterateN1 :: Int -> (a -> a) -> a -> NonEmptyVector a
iterateN1 Int
n a -> a
f a
a = Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
unsafeFromVector (Int -> (a -> a) -> a -> Vector a
forall a. Int -> (a -> a) -> a -> Vector a
V.iterateN (Int -> Int -> Int
forall a. Ord a => a -> a -> a
max Int
n Int
1) a -> a
f a
a)
{-# INLINE iterateN1 #-}
replicateM :: Monad m => Int -> m a -> m (Maybe (NonEmptyVector a))
replicateM :: Int -> m a -> m (Maybe (NonEmptyVector a))
replicateM Int
n m a
a = (Vector a -> Maybe (NonEmptyVector a))
-> m (Vector a) -> m (Maybe (NonEmptyVector a))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Vector a -> Maybe (NonEmptyVector a)
forall a. Vector a -> Maybe (NonEmptyVector a)
fromVector (Int -> m a -> m (Vector a)
forall (m :: * -> *) a. Monad m => Int -> m a -> m (Vector a)
V.replicateM Int
n m a
a)
{-# INLINE replicateM #-}
replicate1M :: Monad m => Int -> m a -> m (NonEmptyVector a)
replicate1M :: Int -> m a -> m (NonEmptyVector a)
replicate1M Int
n m a
a = (Vector a -> NonEmptyVector a)
-> m (Vector a) -> m (NonEmptyVector a)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
unsafeFromVector (Int -> m a -> m (Vector a)
forall (m :: * -> *) a. Monad m => Int -> m a -> m (Vector a)
V.replicateM (Int -> Int -> Int
forall a. Ord a => a -> a -> a
max Int
n Int
1) m a
a)
{-# INLINE replicate1M #-}
generateM :: Monad m => Int -> (Int -> m a) -> m (Maybe (NonEmptyVector a))
generateM :: Int -> (Int -> m a) -> m (Maybe (NonEmptyVector a))
generateM Int
n Int -> m a
f = (Vector a -> Maybe (NonEmptyVector a))
-> m (Vector a) -> m (Maybe (NonEmptyVector a))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Vector a -> Maybe (NonEmptyVector a)
forall a. Vector a -> Maybe (NonEmptyVector a)
fromVector (Int -> (Int -> m a) -> m (Vector a)
forall (m :: * -> *) a.
Monad m =>
Int -> (Int -> m a) -> m (Vector a)
V.generateM Int
n Int -> m a
f)
{-# INLINE generateM #-}
generate1M :: Monad m => Int -> (Int -> m a) -> m (NonEmptyVector a)
generate1M :: Int -> (Int -> m a) -> m (NonEmptyVector a)
generate1M Int
n Int -> m a
f = (Vector a -> NonEmptyVector a)
-> m (Vector a) -> m (NonEmptyVector a)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
unsafeFromVector (Int -> (Int -> m a) -> m (Vector a)
forall (m :: * -> *) a.
Monad m =>
Int -> (Int -> m a) -> m (Vector a)
V.generateM (Int -> Int -> Int
forall a. Ord a => a -> a -> a
max Int
n Int
1) Int -> m a
f)
{-# INLINE generate1M #-}
iterateNM :: Monad m => Int -> (a -> m a) -> a -> m (Maybe (NonEmptyVector a))
iterateNM :: Int -> (a -> m a) -> a -> m (Maybe (NonEmptyVector a))
iterateNM Int
n a -> m a
f a
a = (Vector a -> Maybe (NonEmptyVector a))
-> m (Vector a) -> m (Maybe (NonEmptyVector a))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Vector a -> Maybe (NonEmptyVector a)
forall a. Vector a -> Maybe (NonEmptyVector a)
fromVector (Int -> (a -> m a) -> a -> m (Vector a)
forall (m :: * -> *) a.
Monad m =>
Int -> (a -> m a) -> a -> m (Vector a)
V.iterateNM Int
n a -> m a
f a
a)
{-# INLINE iterateNM #-}
iterateN1M :: Monad m => Int -> (a -> m a) -> a -> m (NonEmptyVector a)
iterateN1M :: Int -> (a -> m a) -> a -> m (NonEmptyVector a)
iterateN1M Int
n a -> m a
f a
a = (Vector a -> NonEmptyVector a)
-> m (Vector a) -> m (NonEmptyVector a)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
unsafeFromVector (Int -> (a -> m a) -> a -> m (Vector a)
forall (m :: * -> *) a.
Monad m =>
Int -> (a -> m a) -> a -> m (Vector a)
V.iterateNM (Int -> Int -> Int
forall a. Ord a => a -> a -> a
max Int
n Int
1) a -> m a
f a
a)
{-# INLINE iterateN1M #-}
create :: (forall s. ST s (MVector s a)) -> Maybe (NonEmptyVector a)
create :: (forall s. ST s (MVector s a)) -> Maybe (NonEmptyVector a)
create forall s. ST s (MVector s a)
p = Vector a -> Maybe (NonEmptyVector a)
forall a. Vector a -> Maybe (NonEmptyVector a)
fromVector ((forall s. ST s (Mutable Vector s a)) -> Vector a
forall (v :: * -> *) a.
Vector v a =>
(forall s. ST s (Mutable v s a)) -> v a
G.create forall s. ST s (MVector s a)
forall s. ST s (Mutable Vector s a)
p)
{-# INLINE create #-}
unsafeCreate :: (forall s. ST s (MVector s a)) -> NonEmptyVector a
unsafeCreate :: (forall s. ST s (MVector s a)) -> NonEmptyVector a
unsafeCreate forall s. ST s (MVector s a)
p = Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
unsafeFromVector ((forall s. ST s (Mutable Vector s a)) -> Vector a
forall (v :: * -> *) a.
Vector v a =>
(forall s. ST s (Mutable v s a)) -> v a
G.create forall s. ST s (MVector s a)
forall s. ST s (Mutable Vector s a)
p)
{-# INLINE unsafeCreate #-}
createT
:: Traversable t
=> (forall s. ST s (t (MVector s a)))
-> t (Maybe (NonEmptyVector a))
createT :: (forall s. ST s (t (MVector s a))) -> t (Maybe (NonEmptyVector a))
createT forall s. ST s (t (MVector s a))
p = (Vector a -> Maybe (NonEmptyVector a))
-> t (Vector a) -> t (Maybe (NonEmptyVector a))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Vector a -> Maybe (NonEmptyVector a)
forall a. Vector a -> Maybe (NonEmptyVector a)
fromVector ((forall s. ST s (t (Mutable Vector s a))) -> t (Vector a)
forall (f :: * -> *) (v :: * -> *) a.
(Traversable f, Vector v a) =>
(forall s. ST s (f (Mutable v s a))) -> f (v a)
G.createT forall s. ST s (t (MVector s a))
forall s. ST s (t (Mutable Vector s a))
p)
{-# INLINE createT #-}
unsafeCreateT
:: Traversable t
=> (forall s. ST s (t (MVector s a)))
-> t (NonEmptyVector a)
unsafeCreateT :: (forall s. ST s (t (MVector s a))) -> t (NonEmptyVector a)
unsafeCreateT forall s. ST s (t (MVector s a))
p = (Vector a -> NonEmptyVector a)
-> t (Vector a) -> t (NonEmptyVector a)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
unsafeFromVector ((forall s. ST s (t (Mutable Vector s a))) -> t (Vector a)
forall (f :: * -> *) (v :: * -> *) a.
(Traversable f, Vector v a) =>
(forall s. ST s (f (Mutable v s a))) -> f (v a)
G.createT forall s. ST s (t (MVector s a))
forall s. ST s (t (Mutable Vector s a))
p)
{-# INLINE unsafeCreateT #-}
unfoldr :: (b -> Maybe (a, b)) -> b -> Maybe (NonEmptyVector a)
unfoldr :: (b -> Maybe (a, b)) -> b -> Maybe (NonEmptyVector a)
unfoldr b -> Maybe (a, b)
f b
b = Vector a -> Maybe (NonEmptyVector a)
forall a. Vector a -> Maybe (NonEmptyVector a)
fromVector ((b -> Maybe (a, b)) -> b -> Vector a
forall b a. (b -> Maybe (a, b)) -> b -> Vector a
V.unfoldr b -> Maybe (a, b)
f b
b)
{-# INLINE unfoldr #-}
unfoldr1 :: (b -> Maybe (a, b)) -> a -> b -> NonEmptyVector a
unfoldr1 :: (b -> Maybe (a, b)) -> a -> b -> NonEmptyVector a
unfoldr1 b -> Maybe (a, b)
f a
a b
b = a -> NonEmptyVector a -> NonEmptyVector a
forall a. a -> NonEmptyVector a -> NonEmptyVector a
cons a
a (Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
unsafeFromVector ((b -> Maybe (a, b)) -> b -> Vector a
forall b a. (b -> Maybe (a, b)) -> b -> Vector a
V.unfoldr b -> Maybe (a, b)
f b
b))
{-# INLINE unfoldr1 #-}
unfoldrN :: Int -> (b -> Maybe (a, b)) -> b -> Maybe (NonEmptyVector a)
unfoldrN :: Int -> (b -> Maybe (a, b)) -> b -> Maybe (NonEmptyVector a)
unfoldrN Int
n b -> Maybe (a, b)
f b
b = Vector a -> Maybe (NonEmptyVector a)
forall a. Vector a -> Maybe (NonEmptyVector a)
fromVector (Int -> (b -> Maybe (a, b)) -> b -> Vector a
forall b a. Int -> (b -> Maybe (a, b)) -> b -> Vector a
V.unfoldrN Int
n b -> Maybe (a, b)
f b
b)
{-# INLINE unfoldrN #-}
unfoldr1N
:: Int
-> (b -> Maybe (a, b))
-> a
-> b
-> NonEmptyVector a
unfoldr1N :: Int -> (b -> Maybe (a, b)) -> a -> b -> NonEmptyVector a
unfoldr1N Int
n b -> Maybe (a, b)
f a
a b
b = a -> NonEmptyVector a -> NonEmptyVector a
forall a. a -> NonEmptyVector a -> NonEmptyVector a
cons a
a (Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
unsafeFromVector (Int -> (b -> Maybe (a, b)) -> b -> Vector a
forall b a. Int -> (b -> Maybe (a, b)) -> b -> Vector a
V.unfoldrN Int
n b -> Maybe (a, b)
f b
b))
{-# INLINE unfoldr1N #-}
unfoldrM
:: Monad m
=> (b -> m (Maybe (a, b)))
-> b
-> m (Maybe (NonEmptyVector a))
unfoldrM :: (b -> m (Maybe (a, b))) -> b -> m (Maybe (NonEmptyVector a))
unfoldrM b -> m (Maybe (a, b))
f b
b = (Vector a -> Maybe (NonEmptyVector a))
-> m (Vector a) -> m (Maybe (NonEmptyVector a))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Vector a -> Maybe (NonEmptyVector a)
forall a. Vector a -> Maybe (NonEmptyVector a)
fromVector ((b -> m (Maybe (a, b))) -> b -> m (Vector a)
forall (m :: * -> *) b a.
Monad m =>
(b -> m (Maybe (a, b))) -> b -> m (Vector a)
V.unfoldrM b -> m (Maybe (a, b))
f b
b)
{-# INLINE unfoldrM #-}
unfoldr1M
:: Monad m
=> (b -> m (Maybe (a, b)))
-> a
-> b
-> m (NonEmptyVector a)
unfoldr1M :: (b -> m (Maybe (a, b))) -> a -> b -> m (NonEmptyVector a)
unfoldr1M b -> m (Maybe (a, b))
f a
a b
b = (Vector a -> NonEmptyVector a)
-> m (Vector a) -> m (NonEmptyVector a)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (a -> NonEmptyVector a -> NonEmptyVector a
forall a. a -> NonEmptyVector a -> NonEmptyVector a
cons a
a (NonEmptyVector a -> NonEmptyVector a)
-> (Vector a -> NonEmptyVector a) -> Vector a -> NonEmptyVector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
unsafeFromVector) ((b -> m (Maybe (a, b))) -> b -> m (Vector a)
forall (m :: * -> *) b a.
Monad m =>
(b -> m (Maybe (a, b))) -> b -> m (Vector a)
V.unfoldrM b -> m (Maybe (a, b))
f b
b)
{-# INLINE unfoldr1M #-}
unfoldrNM
:: Monad m
=> Int
-> (b -> m (Maybe (a, b)))
-> b
-> m (Maybe (NonEmptyVector a))
unfoldrNM :: Int -> (b -> m (Maybe (a, b))) -> b -> m (Maybe (NonEmptyVector a))
unfoldrNM Int
n b -> m (Maybe (a, b))
f b
b = (Vector a -> Maybe (NonEmptyVector a))
-> m (Vector a) -> m (Maybe (NonEmptyVector a))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Vector a -> Maybe (NonEmptyVector a)
forall a. Vector a -> Maybe (NonEmptyVector a)
fromVector (Int -> (b -> m (Maybe (a, b))) -> b -> m (Vector a)
forall (m :: * -> *) b a.
Monad m =>
Int -> (b -> m (Maybe (a, b))) -> b -> m (Vector a)
V.unfoldrNM Int
n b -> m (Maybe (a, b))
f b
b)
{-# INLINE unfoldrNM #-}
unfoldr1NM
:: Monad m
=> Int
-> (b -> m (Maybe (a, b)))
-> a
-> b
-> m (NonEmptyVector a)
unfoldr1NM :: Int -> (b -> m (Maybe (a, b))) -> a -> b -> m (NonEmptyVector a)
unfoldr1NM Int
n b -> m (Maybe (a, b))
f a
a b
b = (Vector a -> NonEmptyVector a)
-> m (Vector a) -> m (NonEmptyVector a)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (a -> NonEmptyVector a -> NonEmptyVector a
forall a. a -> NonEmptyVector a -> NonEmptyVector a
cons a
a (NonEmptyVector a -> NonEmptyVector a)
-> (Vector a -> NonEmptyVector a) -> Vector a -> NonEmptyVector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
unsafeFromVector) (Int -> (b -> m (Maybe (a, b))) -> b -> m (Vector a)
forall (m :: * -> *) b a.
Monad m =>
Int -> (b -> m (Maybe (a, b))) -> b -> m (Vector a)
V.unfoldrNM Int
n b -> m (Maybe (a, b))
f b
b)
{-# INLINE unfoldr1NM #-}
constructN :: Int -> (Vector a -> a) -> Maybe (NonEmptyVector a)
constructN :: Int -> (Vector a -> a) -> Maybe (NonEmptyVector a)
constructN Int
n Vector a -> a
f = Vector a -> Maybe (NonEmptyVector a)
forall a. Vector a -> Maybe (NonEmptyVector a)
fromVector (Int -> (Vector a -> a) -> Vector a
forall a. Int -> (Vector a -> a) -> Vector a
V.constructN Int
n Vector a -> a
f)
{-# INLINE constructN #-}
constructrN :: Int -> (Vector a -> a) -> Maybe (NonEmptyVector a)
constructrN :: Int -> (Vector a -> a) -> Maybe (NonEmptyVector a)
constructrN Int
n Vector a -> a
f = Vector a -> Maybe (NonEmptyVector a)
forall a. Vector a -> Maybe (NonEmptyVector a)
fromVector (Int -> (Vector a -> a) -> Vector a
forall a. Int -> (Vector a -> a) -> Vector a
V.constructrN Int
n Vector a -> a
f)
{-# INLINE constructrN #-}
enumFromN :: Num a => a -> Int -> Maybe (NonEmptyVector a)
enumFromN :: a -> Int -> Maybe (NonEmptyVector a)
enumFromN a
a Int
n = Vector a -> Maybe (NonEmptyVector a)
forall a. Vector a -> Maybe (NonEmptyVector a)
fromVector (a -> Int -> Vector a
forall a. Num a => a -> Int -> Vector a
V.enumFromN a
a Int
n)
{-# INLINE enumFromN #-}
enumFromN1 :: Num a => a -> Int -> NonEmptyVector a
enumFromN1 :: a -> Int -> NonEmptyVector a
enumFromN1 a
a Int
n = Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
unsafeFromVector (a -> Int -> Vector a
forall a. Num a => a -> Int -> Vector a
V.enumFromN a
a (Int -> Int -> Int
forall a. Ord a => a -> a -> a
max Int
n Int
1))
{-# INLINE enumFromN1 #-}
enumFromStepN :: Num a => a -> a -> Int -> Maybe (NonEmptyVector a)
enumFromStepN :: a -> a -> Int -> Maybe (NonEmptyVector a)
enumFromStepN a
a0 a
a1 Int
n = Vector a -> Maybe (NonEmptyVector a)
forall a. Vector a -> Maybe (NonEmptyVector a)
fromVector (a -> a -> Int -> Vector a
forall a. Num a => a -> a -> Int -> Vector a
V.enumFromStepN a
a0 a
a1 Int
n)
{-# INLINE enumFromStepN #-}
enumFromStepN1 :: Num a => a -> a -> Int -> NonEmptyVector a
enumFromStepN1 :: a -> a -> Int -> NonEmptyVector a
enumFromStepN1 a
a0 a
a1 Int
n = Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
unsafeFromVector (a -> a -> Int -> Vector a
forall a. Num a => a -> a -> Int -> Vector a
V.enumFromStepN a
a0 a
a1 (Int -> Int -> Int
forall a. Ord a => a -> a -> a
max Int
n Int
1))
{-# INLINE enumFromStepN1 #-}
enumFromTo :: Enum a => a -> a -> Maybe (NonEmptyVector a)
enumFromTo :: a -> a -> Maybe (NonEmptyVector a)
enumFromTo a
a0 a
a1 = Vector a -> Maybe (NonEmptyVector a)
forall a. Vector a -> Maybe (NonEmptyVector a)
fromVector (a -> a -> Vector a
forall a. Enum a => a -> a -> Vector a
V.enumFromTo a
a0 a
a1)
{-# INLINE enumFromTo #-}
enumFromThenTo :: Enum a => a -> a -> a -> Maybe (NonEmptyVector a)
enumFromThenTo :: a -> a -> a -> Maybe (NonEmptyVector a)
enumFromThenTo a
a0 a
a1 a
a2 = Vector a -> Maybe (NonEmptyVector a)
forall a. Vector a -> Maybe (NonEmptyVector a)
fromVector (a -> a -> a -> Vector a
forall a. Enum a => a -> a -> a -> Vector a
V.enumFromThenTo a
a0 a
a1 a
a2)
{-# INLINE enumFromThenTo #-}
cons :: a -> NonEmptyVector a -> NonEmptyVector a
cons :: a -> NonEmptyVector a -> NonEmptyVector a
cons a
a (NonEmptyVector Vector a
as) = a -> Vector a -> NonEmptyVector a
forall a. a -> Vector a -> NonEmptyVector a
consV a
a Vector a
as
{-# INLINE cons #-}
consV :: a -> Vector a -> NonEmptyVector a
consV :: a -> Vector a -> NonEmptyVector a
consV a
a = Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
NonEmptyVector (Vector a -> NonEmptyVector a)
-> (Vector a -> Vector a) -> Vector a -> NonEmptyVector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> Vector a -> Vector a
forall a. a -> Vector a -> Vector a
V.cons a
a
{-# INLINE consV #-}
snoc :: NonEmptyVector a -> a -> NonEmptyVector a
snoc :: NonEmptyVector a -> a -> NonEmptyVector a
snoc (NonEmptyVector Vector a
as) = Vector a -> a -> NonEmptyVector a
forall a. Vector a -> a -> NonEmptyVector a
snocV Vector a
as
{-# INLINE snoc #-}
snocV :: Vector a -> a -> NonEmptyVector a
snocV :: Vector a -> a -> NonEmptyVector a
snocV Vector a
as = Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
NonEmptyVector (Vector a -> NonEmptyVector a)
-> (a -> Vector a) -> a -> NonEmptyVector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector a -> a -> Vector a
forall a. Vector a -> a -> Vector a
V.snoc Vector a
as
{-# INLINE snocV #-}
(++) :: NonEmptyVector a -> NonEmptyVector a -> NonEmptyVector a
NonEmptyVector Vector a
v ++ :: NonEmptyVector a -> NonEmptyVector a -> NonEmptyVector a
++ NonEmptyVector Vector a
v' = Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
NonEmptyVector (Vector a
v Vector a -> Vector a -> Vector a
forall a. Semigroup a => a -> a -> a
<> Vector a
v')
{-# INLINE (++) #-}
concat :: [NonEmptyVector a] -> Maybe (NonEmptyVector a)
concat :: [NonEmptyVector a] -> Maybe (NonEmptyVector a)
concat [] = Maybe (NonEmptyVector a)
forall a. Maybe a
Nothing
concat (NonEmptyVector a
a:[NonEmptyVector a]
as) = NonEmptyVector a -> Maybe (NonEmptyVector a)
forall a. a -> Maybe a
Just (NonEmpty (NonEmptyVector a) -> NonEmptyVector a
forall a. NonEmpty (NonEmptyVector a) -> NonEmptyVector a
concat1 (NonEmptyVector a
a NonEmptyVector a
-> [NonEmptyVector a] -> NonEmpty (NonEmptyVector a)
forall a. a -> [a] -> NonEmpty a
:| [NonEmptyVector a]
as))
{-# INLINE concat #-}
concat1 :: NonEmpty (NonEmptyVector a) -> NonEmptyVector a
concat1 :: NonEmpty (NonEmptyVector a) -> NonEmptyVector a
concat1 = Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
NonEmptyVector (Vector a -> NonEmptyVector a)
-> (NonEmpty (NonEmptyVector a) -> Vector a)
-> NonEmpty (NonEmptyVector a)
-> NonEmptyVector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Vector a -> NonEmptyVector a -> Vector a)
-> Vector a -> NonEmpty (NonEmptyVector a) -> Vector a
forall (t :: * -> *) b a.
Foldable t =>
(b -> a -> b) -> b -> t a -> b
Foldable.foldl' Vector a -> NonEmptyVector a -> Vector a
forall a. Vector a -> NonEmptyVector a -> Vector a
go Vector a
forall a. Vector a
V.empty
where
go :: Vector a -> NonEmptyVector a -> Vector a
go Vector a
v (NonEmptyVector Vector a
a) = Vector a
v Vector a -> Vector a -> Vector a
forall a. Semigroup a => a -> a -> a
<> Vector a
a
{-# INLINE concat1 #-}
toNonEmpty :: NonEmptyVector a -> NonEmpty a
toNonEmpty :: NonEmptyVector a -> NonEmpty a
toNonEmpty = [a] -> NonEmpty a
forall a. [a] -> NonEmpty a
NonEmpty.fromList ([a] -> NonEmpty a)
-> (NonEmptyVector a -> [a]) -> NonEmptyVector a -> NonEmpty a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector a -> [a]
forall a. Vector a -> [a]
V.toList (Vector a -> [a])
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> [a]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE toNonEmpty #-}
fromNonEmpty :: NonEmpty a -> NonEmptyVector a
fromNonEmpty :: NonEmpty a -> NonEmptyVector a
fromNonEmpty = Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
NonEmptyVector (Vector a -> NonEmptyVector a)
-> (NonEmpty a -> Vector a) -> NonEmpty a -> NonEmptyVector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [a] -> Vector a
forall a. [a] -> Vector a
V.fromList ([a] -> Vector a) -> (NonEmpty a -> [a]) -> NonEmpty a -> Vector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmpty a -> [a]
forall (t :: * -> *) a. Foldable t => t a -> [a]
Foldable.toList
{-# INLINE fromNonEmpty #-}
fromNonEmptyN :: Int -> NonEmpty a -> Maybe (NonEmptyVector a)
fromNonEmptyN :: Int -> NonEmpty a -> Maybe (NonEmptyVector a)
fromNonEmptyN Int
n NonEmpty a
a = Vector a -> Maybe (NonEmptyVector a)
forall a. Vector a -> Maybe (NonEmptyVector a)
fromVector (Int -> [a] -> Vector a
forall a. Int -> [a] -> Vector a
V.fromListN Int
n (NonEmpty a -> [a]
forall (t :: * -> *) a. Foldable t => t a -> [a]
Foldable.toList NonEmpty a
a))
{-# INLINE fromNonEmptyN #-}
fromNonEmptyN1 :: Int -> NonEmpty a -> NonEmptyVector a
fromNonEmptyN1 :: Int -> NonEmpty a -> NonEmptyVector a
fromNonEmptyN1 Int
n = Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
unsafeFromVector
(Vector a -> NonEmptyVector a)
-> (NonEmpty a -> Vector a) -> NonEmpty a -> NonEmptyVector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> [a] -> Vector a
forall a. Int -> [a] -> Vector a
V.fromListN (Int -> Int -> Int
forall a. Ord a => a -> a -> a
max Int
n Int
1)
([a] -> Vector a) -> (NonEmpty a -> [a]) -> NonEmpty a -> Vector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmpty a -> [a]
forall (t :: * -> *) a. Foldable t => t a -> [a]
Foldable.toList
{-# INLINE fromNonEmptyN1 #-}
toVector :: NonEmptyVector a -> Vector a
toVector :: NonEmptyVector a -> Vector a
toVector = NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE toVector #-}
fromVector :: Vector a -> Maybe (NonEmptyVector a)
fromVector :: Vector a -> Maybe (NonEmptyVector a)
fromVector Vector a
v = if Vector a -> Bool
forall a. Vector a -> Bool
V.null Vector a
v then Maybe (NonEmptyVector a)
forall a. Maybe a
Nothing else NonEmptyVector a -> Maybe (NonEmptyVector a)
forall a. a -> Maybe a
Just (Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
NonEmptyVector Vector a
v)
{-# INLINE fromVector #-}
unsafeFromVector :: Vector a -> NonEmptyVector a
unsafeFromVector :: Vector a -> NonEmptyVector a
unsafeFromVector = Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
NonEmptyVector
{-# INLINE unsafeFromVector #-}
toList :: NonEmptyVector a -> [a]
toList :: NonEmptyVector a -> [a]
toList = Vector a -> [a]
forall a. Vector a -> [a]
V.toList (Vector a -> [a])
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> [a]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE toList #-}
fromList :: [a] -> Maybe (NonEmptyVector a)
fromList :: [a] -> Maybe (NonEmptyVector a)
fromList = Vector a -> Maybe (NonEmptyVector a)
forall a. Vector a -> Maybe (NonEmptyVector a)
fromVector (Vector a -> Maybe (NonEmptyVector a))
-> ([a] -> Vector a) -> [a] -> Maybe (NonEmptyVector a)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [a] -> Vector a
forall a. [a] -> Vector a
V.fromList
{-# INLINE fromList #-}
unsafeFromList :: [a] -> NonEmptyVector a
unsafeFromList :: [a] -> NonEmptyVector a
unsafeFromList = Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
unsafeFromVector (Vector a -> NonEmptyVector a)
-> ([a] -> Vector a) -> [a] -> NonEmptyVector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [a] -> Vector a
forall a. [a] -> Vector a
V.fromList
{-# INLINE unsafeFromList #-}
fromListN :: Int -> [a] -> Maybe (NonEmptyVector a)
fromListN :: Int -> [a] -> Maybe (NonEmptyVector a)
fromListN Int
n [a]
as = Vector a -> Maybe (NonEmptyVector a)
forall a. Vector a -> Maybe (NonEmptyVector a)
fromVector (Int -> [a] -> Vector a
forall a. Int -> [a] -> Vector a
V.fromListN Int
n [a]
as)
{-# INLINE fromListN #-}
force :: NonEmptyVector a -> NonEmptyVector a
force :: NonEmptyVector a -> NonEmptyVector a
force (NonEmptyVector Vector a
a) = Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
NonEmptyVector (Vector a -> Vector a
forall a. Vector a -> Vector a
V.force Vector a
a)
{-# INLINE force #-}
(//) :: NonEmptyVector a -> [(Int, a)] -> NonEmptyVector a
NonEmptyVector Vector a
v // :: NonEmptyVector a -> [(Int, a)] -> NonEmptyVector a
// [(Int, a)]
us = Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
NonEmptyVector (Vector a
v Vector a -> [(Int, a)] -> Vector a
forall a. Vector a -> [(Int, a)] -> Vector a
V.// [(Int, a)]
us)
{-# INLINE (//) #-}
update :: NonEmptyVector a -> Vector (Int, a) -> NonEmptyVector a
update :: NonEmptyVector a -> Vector (Int, a) -> NonEmptyVector a
update (NonEmptyVector Vector a
v) Vector (Int, a)
v' = Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
NonEmptyVector (Vector a -> Vector (Int, a) -> Vector a
forall a. Vector a -> Vector (Int, a) -> Vector a
V.update Vector a
v Vector (Int, a)
v')
{-# INLINE update #-}
update_ :: NonEmptyVector a -> Vector Int -> Vector a -> NonEmptyVector a
update_ :: NonEmptyVector a -> Vector Int -> Vector a -> NonEmptyVector a
update_ (NonEmptyVector Vector a
v) Vector Int
is Vector a
as = Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
NonEmptyVector (Vector a -> Vector Int -> Vector a -> Vector a
forall a. Vector a -> Vector Int -> Vector a -> Vector a
V.update_ Vector a
v Vector Int
is Vector a
as)
{-# INLINE update_ #-}
unsafeUpd :: NonEmptyVector a -> [(Int, a)] -> NonEmptyVector a
unsafeUpd :: NonEmptyVector a -> [(Int, a)] -> NonEmptyVector a
unsafeUpd (NonEmptyVector Vector a
v) [(Int, a)]
us = Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
NonEmptyVector (Vector a -> [(Int, a)] -> Vector a
forall a. Vector a -> [(Int, a)] -> Vector a
V.unsafeUpd Vector a
v [(Int, a)]
us)
{-# INLINE unsafeUpd #-}
unsafeUpdate :: NonEmptyVector a -> Vector (Int, a) -> NonEmptyVector a
unsafeUpdate :: NonEmptyVector a -> Vector (Int, a) -> NonEmptyVector a
unsafeUpdate (NonEmptyVector Vector a
v) Vector (Int, a)
us = Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
NonEmptyVector (Vector a -> Vector (Int, a) -> Vector a
forall a. Vector a -> Vector (Int, a) -> Vector a
V.unsafeUpdate Vector a
v Vector (Int, a)
us)
{-# INLINE unsafeUpdate #-}
unsafeUpdate_ :: NonEmptyVector a -> Vector Int -> Vector a -> NonEmptyVector a
unsafeUpdate_ :: NonEmptyVector a -> Vector Int -> Vector a -> NonEmptyVector a
unsafeUpdate_ (NonEmptyVector Vector a
v) Vector Int
is Vector a
as = Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
NonEmptyVector (Vector a -> Vector Int -> Vector a -> Vector a
forall a. Vector a -> Vector Int -> Vector a -> Vector a
V.unsafeUpdate_ Vector a
v Vector Int
is Vector a
as)
{-# INLINE unsafeUpdate_ #-}
accum
:: (a -> b -> a)
-> NonEmptyVector a
-> [(Int, b)]
-> NonEmptyVector a
accum :: (a -> b -> a) -> NonEmptyVector a -> [(Int, b)] -> NonEmptyVector a
accum a -> b -> a
f (NonEmptyVector Vector a
v) [(Int, b)]
u = Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
NonEmptyVector ((a -> b -> a) -> Vector a -> [(Int, b)] -> Vector a
forall a b. (a -> b -> a) -> Vector a -> [(Int, b)] -> Vector a
V.accum a -> b -> a
f Vector a
v [(Int, b)]
u)
{-# INLINE accum #-}
accumulate
:: (a -> b -> a)
-> NonEmptyVector a
-> Vector (Int, b)
-> NonEmptyVector a
accumulate :: (a -> b -> a)
-> NonEmptyVector a -> Vector (Int, b) -> NonEmptyVector a
accumulate a -> b -> a
f (NonEmptyVector Vector a
v) Vector (Int, b)
u = Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
NonEmptyVector ((a -> b -> a) -> Vector a -> Vector (Int, b) -> Vector a
forall a b.
(a -> b -> a) -> Vector a -> Vector (Int, b) -> Vector a
V.accumulate a -> b -> a
f Vector a
v Vector (Int, b)
u)
{-# INLINE accumulate #-}
accumulate_
:: (a -> b -> a)
-> NonEmptyVector a
-> Vector Int
-> Vector b
-> NonEmptyVector a
accumulate_ :: (a -> b -> a)
-> NonEmptyVector a -> Vector Int -> Vector b -> NonEmptyVector a
accumulate_ a -> b -> a
f (NonEmptyVector Vector a
v) Vector Int
i Vector b
b = Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
NonEmptyVector ((a -> b -> a) -> Vector a -> Vector Int -> Vector b -> Vector a
forall a b.
(a -> b -> a) -> Vector a -> Vector Int -> Vector b -> Vector a
V.accumulate_ a -> b -> a
f Vector a
v Vector Int
i Vector b
b)
{-# INLINE accumulate_ #-}
unsafeAccum
:: (a -> b -> a)
-> NonEmptyVector a
-> [(Int, b)]
-> NonEmptyVector a
unsafeAccum :: (a -> b -> a) -> NonEmptyVector a -> [(Int, b)] -> NonEmptyVector a
unsafeAccum a -> b -> a
f (NonEmptyVector Vector a
v) [(Int, b)]
u = Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
NonEmptyVector ((a -> b -> a) -> Vector a -> [(Int, b)] -> Vector a
forall a b. (a -> b -> a) -> Vector a -> [(Int, b)] -> Vector a
V.unsafeAccum a -> b -> a
f Vector a
v [(Int, b)]
u)
{-# INLINE unsafeAccum #-}
unsafeAccumulate
:: (a -> b -> a)
-> NonEmptyVector a
-> Vector (Int, b)
-> NonEmptyVector a
unsafeAccumulate :: (a -> b -> a)
-> NonEmptyVector a -> Vector (Int, b) -> NonEmptyVector a
unsafeAccumulate a -> b -> a
f NonEmptyVector a
v Vector (Int, b)
u = Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
NonEmptyVector ((a -> b -> a) -> Vector a -> Vector (Int, b) -> Vector a
forall a b.
(a -> b -> a) -> Vector a -> Vector (Int, b) -> Vector a
V.unsafeAccumulate a -> b -> a
f Vector a
v' Vector (Int, b)
u)
where
v' :: Vector a
v' = NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector a
v
{-# INLINE unsafeAccumulate #-}
unsafeAccumulate_
:: (a -> b -> a)
-> NonEmptyVector a
-> Vector Int
-> Vector b
-> NonEmptyVector a
unsafeAccumulate_ :: (a -> b -> a)
-> NonEmptyVector a -> Vector Int -> Vector b -> NonEmptyVector a
unsafeAccumulate_ a -> b -> a
f NonEmptyVector a
v Vector Int
i Vector b
b = Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
NonEmptyVector ((a -> b -> a) -> Vector a -> Vector Int -> Vector b -> Vector a
forall a b.
(a -> b -> a) -> Vector a -> Vector Int -> Vector b -> Vector a
V.unsafeAccumulate_ a -> b -> a
f Vector a
v' Vector Int
i Vector b
b)
where
v' :: Vector a
v' = NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector a
v
{-# INLINE unsafeAccumulate_ #-}
reverse :: NonEmptyVector a -> NonEmptyVector a
reverse :: NonEmptyVector a -> NonEmptyVector a
reverse = Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
NonEmptyVector (Vector a -> NonEmptyVector a)
-> (NonEmptyVector a -> Vector a)
-> NonEmptyVector a
-> NonEmptyVector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector a -> Vector a
forall a. Vector a -> Vector a
V.reverse (Vector a -> Vector a)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> Vector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE reverse #-}
backpermute :: NonEmptyVector a -> NonEmptyVector Int -> NonEmptyVector a
backpermute :: NonEmptyVector a -> NonEmptyVector Int -> NonEmptyVector a
backpermute (NonEmptyVector Vector a
v) (NonEmptyVector Vector Int
i)
= Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
NonEmptyVector (Vector a -> Vector Int -> Vector a
forall a. Vector a -> Vector Int -> Vector a
V.backpermute Vector a
v Vector Int
i)
{-# INLINE backpermute #-}
unsafeBackpermute
:: NonEmptyVector a
-> NonEmptyVector Int
-> NonEmptyVector a
unsafeBackpermute :: NonEmptyVector a -> NonEmptyVector Int -> NonEmptyVector a
unsafeBackpermute (NonEmptyVector Vector a
v) (NonEmptyVector Vector Int
i)
= Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
NonEmptyVector (Vector a -> Vector Int -> Vector a
forall a. Vector a -> Vector Int -> Vector a
V.unsafeBackpermute Vector a
v Vector Int
i)
{-# INLINE unsafeBackpermute #-}
modify
:: (forall s. MVector s a -> ST s ())
-> NonEmptyVector a
-> NonEmptyVector a
modify :: (forall s. MVector s a -> ST s ())
-> NonEmptyVector a -> NonEmptyVector a
modify forall s. MVector s a -> ST s ()
p (NonEmptyVector Vector a
v) = Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
NonEmptyVector ((forall s. MVector s a -> ST s ()) -> Vector a -> Vector a
forall a.
(forall s. MVector s a -> ST s ()) -> Vector a -> Vector a
V.modify forall s. MVector s a -> ST s ()
p Vector a
v)
{-# INLINE modify #-}
indexed :: NonEmptyVector a -> NonEmptyVector (Int, a)
indexed :: NonEmptyVector a -> NonEmptyVector (Int, a)
indexed = Vector (Int, a) -> NonEmptyVector (Int, a)
forall a. Vector a -> NonEmptyVector a
NonEmptyVector (Vector (Int, a) -> NonEmptyVector (Int, a))
-> (NonEmptyVector a -> Vector (Int, a))
-> NonEmptyVector a
-> NonEmptyVector (Int, a)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector a -> Vector (Int, a)
forall a. Vector a -> Vector (Int, a)
V.indexed (Vector a -> Vector (Int, a))
-> (NonEmptyVector a -> Vector a)
-> NonEmptyVector a
-> Vector (Int, a)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE indexed #-}
map :: (a -> b) -> NonEmptyVector a -> NonEmptyVector b
map :: (a -> b) -> NonEmptyVector a -> NonEmptyVector b
map a -> b
f = Vector b -> NonEmptyVector b
forall a. Vector a -> NonEmptyVector a
NonEmptyVector (Vector b -> NonEmptyVector b)
-> (NonEmptyVector a -> Vector b)
-> NonEmptyVector a
-> NonEmptyVector b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> b) -> Vector a -> Vector b
forall a b. (a -> b) -> Vector a -> Vector b
V.map a -> b
f (Vector a -> Vector b)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> Vector b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE map #-}
imap :: (Int -> a -> b) -> NonEmptyVector a -> NonEmptyVector b
imap :: (Int -> a -> b) -> NonEmptyVector a -> NonEmptyVector b
imap Int -> a -> b
f = Vector b -> NonEmptyVector b
forall a. Vector a -> NonEmptyVector a
NonEmptyVector (Vector b -> NonEmptyVector b)
-> (NonEmptyVector a -> Vector b)
-> NonEmptyVector a
-> NonEmptyVector b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Int -> a -> b) -> Vector a -> Vector b
forall a b. (Int -> a -> b) -> Vector a -> Vector b
V.imap Int -> a -> b
f (Vector a -> Vector b)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> Vector b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE imap #-}
concatMap
:: (a -> NonEmptyVector b)
-> NonEmptyVector a
-> NonEmptyVector b
concatMap :: (a -> NonEmptyVector b) -> NonEmptyVector a -> NonEmptyVector b
concatMap a -> NonEmptyVector b
f = Vector b -> NonEmptyVector b
forall a. Vector a -> NonEmptyVector a
NonEmptyVector (Vector b -> NonEmptyVector b)
-> (NonEmptyVector a -> Vector b)
-> NonEmptyVector a
-> NonEmptyVector b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> Vector b) -> Vector a -> Vector b
forall a b. (a -> Vector b) -> Vector a -> Vector b
V.concatMap (NonEmptyVector b -> Vector b
forall a. NonEmptyVector a -> Vector a
_neVec (NonEmptyVector b -> Vector b)
-> (a -> NonEmptyVector b) -> a -> Vector b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> NonEmptyVector b
f) (Vector a -> Vector b)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> Vector b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE concatMap #-}
mapM :: Monad m => (a -> m b) -> NonEmptyVector a -> m (NonEmptyVector b)
mapM :: (a -> m b) -> NonEmptyVector a -> m (NonEmptyVector b)
mapM a -> m b
f = (Vector b -> NonEmptyVector b)
-> m (Vector b) -> m (NonEmptyVector b)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Vector b -> NonEmptyVector b
forall a. Vector a -> NonEmptyVector a
NonEmptyVector (m (Vector b) -> m (NonEmptyVector b))
-> (NonEmptyVector a -> m (Vector b))
-> NonEmptyVector a
-> m (NonEmptyVector b)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> m b) -> Vector a -> m (Vector b)
forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> Vector a -> m (Vector b)
V.mapM a -> m b
f (Vector a -> m (Vector b))
-> (NonEmptyVector a -> Vector a)
-> NonEmptyVector a
-> m (Vector b)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE mapM #-}
imapM
:: Monad m
=> (Int -> a -> m b)
-> NonEmptyVector a
-> m (NonEmptyVector b)
imapM :: (Int -> a -> m b) -> NonEmptyVector a -> m (NonEmptyVector b)
imapM Int -> a -> m b
f = (Vector b -> NonEmptyVector b)
-> m (Vector b) -> m (NonEmptyVector b)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Vector b -> NonEmptyVector b
forall a. Vector a -> NonEmptyVector a
NonEmptyVector (m (Vector b) -> m (NonEmptyVector b))
-> (NonEmptyVector a -> m (Vector b))
-> NonEmptyVector a
-> m (NonEmptyVector b)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Int -> a -> m b) -> Vector a -> m (Vector b)
forall (m :: * -> *) a b.
Monad m =>
(Int -> a -> m b) -> Vector a -> m (Vector b)
V.imapM Int -> a -> m b
f (Vector a -> m (Vector b))
-> (NonEmptyVector a -> Vector a)
-> NonEmptyVector a
-> m (Vector b)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE imapM #-}
mapM_ :: Monad m => (a -> m b) -> NonEmptyVector a -> m ()
mapM_ :: (a -> m b) -> NonEmptyVector a -> m ()
mapM_ a -> m b
f = (a -> m b) -> Vector a -> m ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> Vector a -> m ()
V.mapM_ a -> m b
f (Vector a -> m ())
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> m ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE mapM_ #-}
imapM_ :: Monad m => (Int -> a -> m b) -> NonEmptyVector a -> m ()
imapM_ :: (Int -> a -> m b) -> NonEmptyVector a -> m ()
imapM_ Int -> a -> m b
f = (Int -> a -> m b) -> Vector a -> m ()
forall (m :: * -> *) a b.
Monad m =>
(Int -> a -> m b) -> Vector a -> m ()
V.imapM_ Int -> a -> m b
f (Vector a -> m ())
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> m ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE imapM_ #-}
forM :: Monad m => NonEmptyVector a -> (a -> m b) -> m (NonEmptyVector b)
forM :: NonEmptyVector a -> (a -> m b) -> m (NonEmptyVector b)
forM (NonEmptyVector Vector a
v) a -> m b
f = (Vector b -> NonEmptyVector b)
-> m (Vector b) -> m (NonEmptyVector b)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Vector b -> NonEmptyVector b
forall a. Vector a -> NonEmptyVector a
NonEmptyVector (Vector a -> (a -> m b) -> m (Vector b)
forall (m :: * -> *) a b.
Monad m =>
Vector a -> (a -> m b) -> m (Vector b)
V.forM Vector a
v a -> m b
f)
{-# INLINE forM #-}
forM_ :: Monad m => NonEmptyVector a -> (a -> m b) -> m ()
forM_ :: NonEmptyVector a -> (a -> m b) -> m ()
forM_ (NonEmptyVector Vector a
v) a -> m b
f = Vector a -> (a -> m b) -> m ()
forall (m :: * -> *) a b. Monad m => Vector a -> (a -> m b) -> m ()
V.forM_ Vector a
v a -> m b
f
{-# INLINE forM_ #-}
zipWith
:: (a -> b -> c)
-> NonEmptyVector a
-> NonEmptyVector b
-> NonEmptyVector c
zipWith :: (a -> b -> c)
-> NonEmptyVector a -> NonEmptyVector b -> NonEmptyVector c
zipWith a -> b -> c
f NonEmptyVector a
a NonEmptyVector b
b = Vector c -> NonEmptyVector c
forall a. Vector a -> NonEmptyVector a
NonEmptyVector ((a -> b -> c) -> Vector a -> Vector b -> Vector c
forall a b c. (a -> b -> c) -> Vector a -> Vector b -> Vector c
V.zipWith a -> b -> c
f Vector a
a' Vector b
b')
where
a' :: Vector a
a' = NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector a
a
b' :: Vector b
b' = NonEmptyVector b -> Vector b
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector b
b
{-# INLINE zipWith #-}
zipWith3
:: (a -> b -> c -> d)
-> NonEmptyVector a
-> NonEmptyVector b
-> NonEmptyVector c
-> NonEmptyVector d
zipWith3 :: (a -> b -> c -> d)
-> NonEmptyVector a
-> NonEmptyVector b
-> NonEmptyVector c
-> NonEmptyVector d
zipWith3 a -> b -> c -> d
f NonEmptyVector a
a NonEmptyVector b
b NonEmptyVector c
c = Vector d -> NonEmptyVector d
forall a. Vector a -> NonEmptyVector a
NonEmptyVector ((a -> b -> c -> d) -> Vector a -> Vector b -> Vector c -> Vector d
forall a b c d.
(a -> b -> c -> d) -> Vector a -> Vector b -> Vector c -> Vector d
V.zipWith3 a -> b -> c -> d
f Vector a
a' Vector b
b' Vector c
c')
where
a' :: Vector a
a' = NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector a
a
b' :: Vector b
b' = NonEmptyVector b -> Vector b
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector b
b
c' :: Vector c
c' = NonEmptyVector c -> Vector c
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector c
c
{-# INLINE zipWith3 #-}
zipWith4
:: (a -> b -> c -> d -> e)
-> NonEmptyVector a
-> NonEmptyVector b
-> NonEmptyVector c
-> NonEmptyVector d
-> NonEmptyVector e
zipWith4 :: (a -> b -> c -> d -> e)
-> NonEmptyVector a
-> NonEmptyVector b
-> NonEmptyVector c
-> NonEmptyVector d
-> NonEmptyVector e
zipWith4 a -> b -> c -> d -> e
f NonEmptyVector a
a NonEmptyVector b
b NonEmptyVector c
c NonEmptyVector d
d = Vector e -> NonEmptyVector e
forall a. Vector a -> NonEmptyVector a
NonEmptyVector ((a -> b -> c -> d -> e)
-> Vector a -> Vector b -> Vector c -> Vector d -> Vector e
forall a b c d e.
(a -> b -> c -> d -> e)
-> Vector a -> Vector b -> Vector c -> Vector d -> Vector e
V.zipWith4 a -> b -> c -> d -> e
f Vector a
a' Vector b
b' Vector c
c' Vector d
d')
where
a' :: Vector a
a' = NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector a
a
b' :: Vector b
b' = NonEmptyVector b -> Vector b
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector b
b
c' :: Vector c
c' = NonEmptyVector c -> Vector c
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector c
c
d' :: Vector d
d' = NonEmptyVector d -> Vector d
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector d
d
{-# INLINE zipWith4 #-}
zipWith5
:: (a -> b -> c -> d -> e -> f)
-> NonEmptyVector a
-> NonEmptyVector b
-> NonEmptyVector c
-> NonEmptyVector d
-> NonEmptyVector e
-> NonEmptyVector f
zipWith5 :: (a -> b -> c -> d -> e -> f)
-> NonEmptyVector a
-> NonEmptyVector b
-> NonEmptyVector c
-> NonEmptyVector d
-> NonEmptyVector e
-> NonEmptyVector f
zipWith5 a -> b -> c -> d -> e -> f
f NonEmptyVector a
a NonEmptyVector b
b NonEmptyVector c
c NonEmptyVector d
d NonEmptyVector e
e = Vector f -> NonEmptyVector f
forall a. Vector a -> NonEmptyVector a
NonEmptyVector ((a -> b -> c -> d -> e -> f)
-> Vector a
-> Vector b
-> Vector c
-> Vector d
-> Vector e
-> Vector f
forall a b c d e f.
(a -> b -> c -> d -> e -> f)
-> Vector a
-> Vector b
-> Vector c
-> Vector d
-> Vector e
-> Vector f
V.zipWith5 a -> b -> c -> d -> e -> f
f Vector a
a' Vector b
b' Vector c
c' Vector d
d' Vector e
e')
where
a' :: Vector a
a' = NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector a
a
b' :: Vector b
b' = NonEmptyVector b -> Vector b
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector b
b
c' :: Vector c
c' = NonEmptyVector c -> Vector c
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector c
c
d' :: Vector d
d' = NonEmptyVector d -> Vector d
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector d
d
e' :: Vector e
e' = NonEmptyVector e -> Vector e
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector e
e
{-# INLINE zipWith5 #-}
zipWith6
:: (a -> b -> c -> d -> e -> f -> g)
-> NonEmptyVector a
-> NonEmptyVector b
-> NonEmptyVector c
-> NonEmptyVector d
-> NonEmptyVector e
-> NonEmptyVector f
-> NonEmptyVector g
zipWith6 :: (a -> b -> c -> d -> e -> f -> g)
-> NonEmptyVector a
-> NonEmptyVector b
-> NonEmptyVector c
-> NonEmptyVector d
-> NonEmptyVector e
-> NonEmptyVector f
-> NonEmptyVector g
zipWith6 a -> b -> c -> d -> e -> f -> g
k NonEmptyVector a
a NonEmptyVector b
b NonEmptyVector c
c NonEmptyVector d
d NonEmptyVector e
e NonEmptyVector f
f = Vector g -> NonEmptyVector g
forall a. Vector a -> NonEmptyVector a
NonEmptyVector ((a -> b -> c -> d -> e -> f -> g)
-> Vector a
-> Vector b
-> Vector c
-> Vector d
-> Vector e
-> Vector f
-> Vector g
forall a b c d e f g.
(a -> b -> c -> d -> e -> f -> g)
-> Vector a
-> Vector b
-> Vector c
-> Vector d
-> Vector e
-> Vector f
-> Vector g
V.zipWith6 a -> b -> c -> d -> e -> f -> g
k Vector a
a' Vector b
b' Vector c
c' Vector d
d' Vector e
e' Vector f
f')
where
a' :: Vector a
a' = NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector a
a
b' :: Vector b
b' = NonEmptyVector b -> Vector b
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector b
b
c' :: Vector c
c' = NonEmptyVector c -> Vector c
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector c
c
d' :: Vector d
d' = NonEmptyVector d -> Vector d
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector d
d
e' :: Vector e
e' = NonEmptyVector e -> Vector e
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector e
e
f' :: Vector f
f' = NonEmptyVector f -> Vector f
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector f
f
{-# INLINE zipWith6 #-}
izipWith
:: (Int -> a -> b -> c)
-> NonEmptyVector a
-> NonEmptyVector b
-> NonEmptyVector c
izipWith :: (Int -> a -> b -> c)
-> NonEmptyVector a -> NonEmptyVector b -> NonEmptyVector c
izipWith Int -> a -> b -> c
f NonEmptyVector a
a NonEmptyVector b
b = Vector c -> NonEmptyVector c
forall a. Vector a -> NonEmptyVector a
NonEmptyVector ((Int -> a -> b -> c) -> Vector a -> Vector b -> Vector c
forall a b c.
(Int -> a -> b -> c) -> Vector a -> Vector b -> Vector c
V.izipWith Int -> a -> b -> c
f Vector a
a' Vector b
b')
where
a' :: Vector a
a' = NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector a
a
b' :: Vector b
b' = NonEmptyVector b -> Vector b
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector b
b
{-# INLINE izipWith #-}
izipWith3
:: (Int -> a -> b -> c -> d)
-> NonEmptyVector a
-> NonEmptyVector b
-> NonEmptyVector c
-> NonEmptyVector d
izipWith3 :: (Int -> a -> b -> c -> d)
-> NonEmptyVector a
-> NonEmptyVector b
-> NonEmptyVector c
-> NonEmptyVector d
izipWith3 Int -> a -> b -> c -> d
f NonEmptyVector a
a NonEmptyVector b
b NonEmptyVector c
c = Vector d -> NonEmptyVector d
forall a. Vector a -> NonEmptyVector a
NonEmptyVector ((Int -> a -> b -> c -> d)
-> Vector a -> Vector b -> Vector c -> Vector d
forall a b c d.
(Int -> a -> b -> c -> d)
-> Vector a -> Vector b -> Vector c -> Vector d
V.izipWith3 Int -> a -> b -> c -> d
f Vector a
a' Vector b
b' Vector c
c')
where
a' :: Vector a
a' = NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector a
a
b' :: Vector b
b' = NonEmptyVector b -> Vector b
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector b
b
c' :: Vector c
c' = NonEmptyVector c -> Vector c
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector c
c
{-# INLINE izipWith3 #-}
izipWith4
:: (Int -> a -> b -> c -> d -> e)
-> NonEmptyVector a
-> NonEmptyVector b
-> NonEmptyVector c
-> NonEmptyVector d
-> NonEmptyVector e
izipWith4 :: (Int -> a -> b -> c -> d -> e)
-> NonEmptyVector a
-> NonEmptyVector b
-> NonEmptyVector c
-> NonEmptyVector d
-> NonEmptyVector e
izipWith4 Int -> a -> b -> c -> d -> e
f NonEmptyVector a
a NonEmptyVector b
b NonEmptyVector c
c NonEmptyVector d
d = Vector e -> NonEmptyVector e
forall a. Vector a -> NonEmptyVector a
NonEmptyVector ((Int -> a -> b -> c -> d -> e)
-> Vector a -> Vector b -> Vector c -> Vector d -> Vector e
forall a b c d e.
(Int -> a -> b -> c -> d -> e)
-> Vector a -> Vector b -> Vector c -> Vector d -> Vector e
V.izipWith4 Int -> a -> b -> c -> d -> e
f Vector a
a' Vector b
b' Vector c
c' Vector d
d')
where
a' :: Vector a
a' = NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector a
a
b' :: Vector b
b' = NonEmptyVector b -> Vector b
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector b
b
c' :: Vector c
c' = NonEmptyVector c -> Vector c
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector c
c
d' :: Vector d
d' = NonEmptyVector d -> Vector d
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector d
d
{-# INLINE izipWith4 #-}
izipWith5
:: (Int -> a -> b -> c -> d -> e -> f)
-> NonEmptyVector a
-> NonEmptyVector b
-> NonEmptyVector c
-> NonEmptyVector d
-> NonEmptyVector e
-> NonEmptyVector f
izipWith5 :: (Int -> a -> b -> c -> d -> e -> f)
-> NonEmptyVector a
-> NonEmptyVector b
-> NonEmptyVector c
-> NonEmptyVector d
-> NonEmptyVector e
-> NonEmptyVector f
izipWith5 Int -> a -> b -> c -> d -> e -> f
f NonEmptyVector a
a NonEmptyVector b
b NonEmptyVector c
c NonEmptyVector d
d NonEmptyVector e
e = Vector f -> NonEmptyVector f
forall a. Vector a -> NonEmptyVector a
NonEmptyVector ((Int -> a -> b -> c -> d -> e -> f)
-> Vector a
-> Vector b
-> Vector c
-> Vector d
-> Vector e
-> Vector f
forall a b c d e f.
(Int -> a -> b -> c -> d -> e -> f)
-> Vector a
-> Vector b
-> Vector c
-> Vector d
-> Vector e
-> Vector f
V.izipWith5 Int -> a -> b -> c -> d -> e -> f
f Vector a
a' Vector b
b' Vector c
c' Vector d
d' Vector e
e')
where
a' :: Vector a
a' = NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector a
a
b' :: Vector b
b' = NonEmptyVector b -> Vector b
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector b
b
c' :: Vector c
c' = NonEmptyVector c -> Vector c
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector c
c
d' :: Vector d
d' = NonEmptyVector d -> Vector d
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector d
d
e' :: Vector e
e' = NonEmptyVector e -> Vector e
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector e
e
{-# INLINE izipWith5 #-}
izipWith6
:: (Int -> a -> b -> c -> d -> e -> f -> g)
-> NonEmptyVector a
-> NonEmptyVector b
-> NonEmptyVector c
-> NonEmptyVector d
-> NonEmptyVector e
-> NonEmptyVector f
-> NonEmptyVector g
izipWith6 :: (Int -> a -> b -> c -> d -> e -> f -> g)
-> NonEmptyVector a
-> NonEmptyVector b
-> NonEmptyVector c
-> NonEmptyVector d
-> NonEmptyVector e
-> NonEmptyVector f
-> NonEmptyVector g
izipWith6 Int -> a -> b -> c -> d -> e -> f -> g
k NonEmptyVector a
a NonEmptyVector b
b NonEmptyVector c
c NonEmptyVector d
d NonEmptyVector e
e NonEmptyVector f
f = Vector g -> NonEmptyVector g
forall a. Vector a -> NonEmptyVector a
NonEmptyVector ((Int -> a -> b -> c -> d -> e -> f -> g)
-> Vector a
-> Vector b
-> Vector c
-> Vector d
-> Vector e
-> Vector f
-> Vector g
forall a b c d e f g.
(Int -> a -> b -> c -> d -> e -> f -> g)
-> Vector a
-> Vector b
-> Vector c
-> Vector d
-> Vector e
-> Vector f
-> Vector g
V.izipWith6 Int -> a -> b -> c -> d -> e -> f -> g
k Vector a
a' Vector b
b' Vector c
c' Vector d
d' Vector e
e' Vector f
f')
where
a' :: Vector a
a' = NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector a
a
b' :: Vector b
b' = NonEmptyVector b -> Vector b
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector b
b
c' :: Vector c
c' = NonEmptyVector c -> Vector c
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector c
c
d' :: Vector d
d' = NonEmptyVector d -> Vector d
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector d
d
e' :: Vector e
e' = NonEmptyVector e -> Vector e
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector e
e
f' :: Vector f
f' = NonEmptyVector f -> Vector f
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector f
f
{-# INLINE izipWith6 #-}
zip :: NonEmptyVector a -> NonEmptyVector b -> NonEmptyVector (a, b)
zip :: NonEmptyVector a -> NonEmptyVector b -> NonEmptyVector (a, b)
zip NonEmptyVector a
a NonEmptyVector b
b = Vector (a, b) -> NonEmptyVector (a, b)
forall a. Vector a -> NonEmptyVector a
NonEmptyVector (Vector a -> Vector b -> Vector (a, b)
forall a b. Vector a -> Vector b -> Vector (a, b)
V.zip Vector a
a' Vector b
b')
where
a' :: Vector a
a' = NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector a
a
b' :: Vector b
b' = NonEmptyVector b -> Vector b
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector b
b
{-# INLINE zip #-}
zip3
:: NonEmptyVector a
-> NonEmptyVector b
-> NonEmptyVector c
-> NonEmptyVector (a, b, c)
zip3 :: NonEmptyVector a
-> NonEmptyVector b -> NonEmptyVector c -> NonEmptyVector (a, b, c)
zip3 NonEmptyVector a
a NonEmptyVector b
b NonEmptyVector c
c = Vector (a, b, c) -> NonEmptyVector (a, b, c)
forall a. Vector a -> NonEmptyVector a
NonEmptyVector (Vector a -> Vector b -> Vector c -> Vector (a, b, c)
forall a b c. Vector a -> Vector b -> Vector c -> Vector (a, b, c)
V.zip3 Vector a
a' Vector b
b' Vector c
c')
where
a' :: Vector a
a' = NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector a
a
b' :: Vector b
b' = NonEmptyVector b -> Vector b
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector b
b
c' :: Vector c
c' = NonEmptyVector c -> Vector c
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector c
c
{-# INLINE zip3 #-}
zip4
:: NonEmptyVector a
-> NonEmptyVector b
-> NonEmptyVector c
-> NonEmptyVector d
-> NonEmptyVector (a, b, c, d)
zip4 :: NonEmptyVector a
-> NonEmptyVector b
-> NonEmptyVector c
-> NonEmptyVector d
-> NonEmptyVector (a, b, c, d)
zip4 NonEmptyVector a
a NonEmptyVector b
b NonEmptyVector c
c NonEmptyVector d
d = Vector (a, b, c, d) -> NonEmptyVector (a, b, c, d)
forall a. Vector a -> NonEmptyVector a
NonEmptyVector (Vector a -> Vector b -> Vector c -> Vector d -> Vector (a, b, c, d)
forall a b c d.
Vector a -> Vector b -> Vector c -> Vector d -> Vector (a, b, c, d)
V.zip4 Vector a
a' Vector b
b' Vector c
c' Vector d
d')
where
a' :: Vector a
a' = NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector a
a
b' :: Vector b
b' = NonEmptyVector b -> Vector b
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector b
b
c' :: Vector c
c' = NonEmptyVector c -> Vector c
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector c
c
d' :: Vector d
d' = NonEmptyVector d -> Vector d
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector d
d
{-# INLINE zip4 #-}
zip5
:: NonEmptyVector a
-> NonEmptyVector b
-> NonEmptyVector c
-> NonEmptyVector d
-> NonEmptyVector e
-> NonEmptyVector (a, b, c, d, e)
zip5 :: NonEmptyVector a
-> NonEmptyVector b
-> NonEmptyVector c
-> NonEmptyVector d
-> NonEmptyVector e
-> NonEmptyVector (a, b, c, d, e)
zip5 NonEmptyVector a
a NonEmptyVector b
b NonEmptyVector c
c NonEmptyVector d
d NonEmptyVector e
e = Vector (a, b, c, d, e) -> NonEmptyVector (a, b, c, d, e)
forall a. Vector a -> NonEmptyVector a
NonEmptyVector (Vector a
-> Vector b
-> Vector c
-> Vector d
-> Vector e
-> Vector (a, b, c, d, e)
forall a b c d e.
Vector a
-> Vector b
-> Vector c
-> Vector d
-> Vector e
-> Vector (a, b, c, d, e)
V.zip5 Vector a
a' Vector b
b' Vector c
c' Vector d
d' Vector e
e')
where
a' :: Vector a
a' = NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector a
a
b' :: Vector b
b' = NonEmptyVector b -> Vector b
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector b
b
c' :: Vector c
c' = NonEmptyVector c -> Vector c
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector c
c
d' :: Vector d
d' = NonEmptyVector d -> Vector d
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector d
d
e' :: Vector e
e' = NonEmptyVector e -> Vector e
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector e
e
{-# INLINE zip5 #-}
zip6
:: NonEmptyVector a
-> NonEmptyVector b
-> NonEmptyVector c
-> NonEmptyVector d
-> NonEmptyVector e
-> NonEmptyVector f
-> NonEmptyVector (a, b, c, d, e, f)
zip6 :: NonEmptyVector a
-> NonEmptyVector b
-> NonEmptyVector c
-> NonEmptyVector d
-> NonEmptyVector e
-> NonEmptyVector f
-> NonEmptyVector (a, b, c, d, e, f)
zip6 NonEmptyVector a
a NonEmptyVector b
b NonEmptyVector c
c NonEmptyVector d
d NonEmptyVector e
e NonEmptyVector f
f = Vector (a, b, c, d, e, f) -> NonEmptyVector (a, b, c, d, e, f)
forall a. Vector a -> NonEmptyVector a
NonEmptyVector (Vector a
-> Vector b
-> Vector c
-> Vector d
-> Vector e
-> Vector f
-> Vector (a, b, c, d, e, f)
forall a b c d e f.
Vector a
-> Vector b
-> Vector c
-> Vector d
-> Vector e
-> Vector f
-> Vector (a, b, c, d, e, f)
V.zip6 Vector a
a' Vector b
b' Vector c
c' Vector d
d' Vector e
e' Vector f
f')
where
a' :: Vector a
a' = NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector a
a
b' :: Vector b
b' = NonEmptyVector b -> Vector b
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector b
b
c' :: Vector c
c' = NonEmptyVector c -> Vector c
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector c
c
d' :: Vector d
d' = NonEmptyVector d -> Vector d
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector d
d
e' :: Vector e
e' = NonEmptyVector e -> Vector e
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector e
e
f' :: Vector f
f' = NonEmptyVector f -> Vector f
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector f
f
{-# INLINE zip6 #-}
zipWithM
:: Monad m
=> (a -> b -> m c)
-> NonEmptyVector a
-> NonEmptyVector b
-> m (NonEmptyVector c)
zipWithM :: (a -> b -> m c)
-> NonEmptyVector a -> NonEmptyVector b -> m (NonEmptyVector c)
zipWithM a -> b -> m c
f NonEmptyVector a
a NonEmptyVector b
b = (Vector c -> NonEmptyVector c)
-> m (Vector c) -> m (NonEmptyVector c)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Vector c -> NonEmptyVector c
forall a. Vector a -> NonEmptyVector a
NonEmptyVector ((a -> b -> m c) -> Vector a -> Vector b -> m (Vector c)
forall (m :: * -> *) a b c.
Monad m =>
(a -> b -> m c) -> Vector a -> Vector b -> m (Vector c)
V.zipWithM a -> b -> m c
f Vector a
a' Vector b
b')
where
a' :: Vector a
a' = NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector a
a
b' :: Vector b
b' = NonEmptyVector b -> Vector b
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector b
b
{-# INLINE zipWithM #-}
izipWithM
:: Monad m
=> (Int -> a -> b -> m c)
-> NonEmptyVector a
-> NonEmptyVector b
-> m (NonEmptyVector c)
izipWithM :: (Int -> a -> b -> m c)
-> NonEmptyVector a -> NonEmptyVector b -> m (NonEmptyVector c)
izipWithM Int -> a -> b -> m c
f NonEmptyVector a
a NonEmptyVector b
b = (Vector c -> NonEmptyVector c)
-> m (Vector c) -> m (NonEmptyVector c)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Vector c -> NonEmptyVector c
forall a. Vector a -> NonEmptyVector a
NonEmptyVector ((Int -> a -> b -> m c) -> Vector a -> Vector b -> m (Vector c)
forall (m :: * -> *) a b c.
Monad m =>
(Int -> a -> b -> m c) -> Vector a -> Vector b -> m (Vector c)
V.izipWithM Int -> a -> b -> m c
f Vector a
a' Vector b
b')
where
a' :: Vector a
a' = NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector a
a
b' :: Vector b
b' = NonEmptyVector b -> Vector b
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector b
b
{-# INLINE izipWithM #-}
zipWithM_
:: Monad m
=> (a -> b -> m c)
-> NonEmptyVector a
-> NonEmptyVector b
-> m ()
zipWithM_ :: (a -> b -> m c) -> NonEmptyVector a -> NonEmptyVector b -> m ()
zipWithM_ a -> b -> m c
f NonEmptyVector a
a NonEmptyVector b
b = (a -> b -> m c) -> Vector a -> Vector b -> m ()
forall (m :: * -> *) a b c.
Monad m =>
(a -> b -> m c) -> Vector a -> Vector b -> m ()
V.zipWithM_ a -> b -> m c
f (NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector a
a) (NonEmptyVector b -> Vector b
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector b
b)
{-# INLINE zipWithM_ #-}
izipWithM_
:: Monad m
=> (Int -> a -> b -> m c)
-> NonEmptyVector a
-> NonEmptyVector b
-> m ()
izipWithM_ :: (Int -> a -> b -> m c)
-> NonEmptyVector a -> NonEmptyVector b -> m ()
izipWithM_ Int -> a -> b -> m c
f NonEmptyVector a
a NonEmptyVector b
b = (Int -> a -> b -> m c) -> Vector a -> Vector b -> m ()
forall (m :: * -> *) a b c.
Monad m =>
(Int -> a -> b -> m c) -> Vector a -> Vector b -> m ()
V.izipWithM_ Int -> a -> b -> m c
f (NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector a
a) (NonEmptyVector b -> Vector b
forall a. NonEmptyVector a -> Vector a
_neVec NonEmptyVector b
b)
{-# INLINE izipWithM_ #-}
unzip :: NonEmptyVector (a, b) -> (NonEmptyVector a, NonEmptyVector b)
unzip :: NonEmptyVector (a, b) -> (NonEmptyVector a, NonEmptyVector b)
unzip (NonEmptyVector Vector (a, b)
v) = case Vector (a, b) -> (Vector a, Vector b)
forall a b. Vector (a, b) -> (Vector a, Vector b)
V.unzip Vector (a, b)
v of
~(Vector a
a,Vector b
b) -> (Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
NonEmptyVector Vector a
a, Vector b -> NonEmptyVector b
forall a. Vector a -> NonEmptyVector a
NonEmptyVector Vector b
b)
{-# INLINE unzip #-}
unzip3
:: NonEmptyVector (a, b, c)
-> (NonEmptyVector a, NonEmptyVector b, NonEmptyVector c)
unzip3 :: NonEmptyVector (a, b, c)
-> (NonEmptyVector a, NonEmptyVector b, NonEmptyVector c)
unzip3 (NonEmptyVector Vector (a, b, c)
v) = case Vector (a, b, c) -> (Vector a, Vector b, Vector c)
forall a b c. Vector (a, b, c) -> (Vector a, Vector b, Vector c)
V.unzip3 Vector (a, b, c)
v of
~(Vector a
a,Vector b
b,Vector c
c) ->
( Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
NonEmptyVector Vector a
a
, Vector b -> NonEmptyVector b
forall a. Vector a -> NonEmptyVector a
NonEmptyVector Vector b
b
, Vector c -> NonEmptyVector c
forall a. Vector a -> NonEmptyVector a
NonEmptyVector Vector c
c
)
{-# INLINE unzip3 #-}
unzip4
:: NonEmptyVector (a, b, c, d)
-> ( NonEmptyVector a
, NonEmptyVector b
, NonEmptyVector c
, NonEmptyVector d
)
unzip4 :: NonEmptyVector (a, b, c, d)
-> (NonEmptyVector a, NonEmptyVector b, NonEmptyVector c,
NonEmptyVector d)
unzip4 (NonEmptyVector Vector (a, b, c, d)
v) = case Vector (a, b, c, d) -> (Vector a, Vector b, Vector c, Vector d)
forall a b c d.
Vector (a, b, c, d) -> (Vector a, Vector b, Vector c, Vector d)
V.unzip4 Vector (a, b, c, d)
v of
~(Vector a
a,Vector b
b,Vector c
c,Vector d
d) ->
( Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
NonEmptyVector Vector a
a
, Vector b -> NonEmptyVector b
forall a. Vector a -> NonEmptyVector a
NonEmptyVector Vector b
b
, Vector c -> NonEmptyVector c
forall a. Vector a -> NonEmptyVector a
NonEmptyVector Vector c
c
, Vector d -> NonEmptyVector d
forall a. Vector a -> NonEmptyVector a
NonEmptyVector Vector d
d
)
{-# INLINE unzip4 #-}
unzip5
:: NonEmptyVector (a, b, c, d, e)
-> ( NonEmptyVector a
, NonEmptyVector b
, NonEmptyVector c
, NonEmptyVector d
, NonEmptyVector e
)
unzip5 :: NonEmptyVector (a, b, c, d, e)
-> (NonEmptyVector a, NonEmptyVector b, NonEmptyVector c,
NonEmptyVector d, NonEmptyVector e)
unzip5 (NonEmptyVector Vector (a, b, c, d, e)
v) = case Vector (a, b, c, d, e)
-> (Vector a, Vector b, Vector c, Vector d, Vector e)
forall a b c d e.
Vector (a, b, c, d, e)
-> (Vector a, Vector b, Vector c, Vector d, Vector e)
V.unzip5 Vector (a, b, c, d, e)
v of
~(Vector a
a,Vector b
b,Vector c
c,Vector d
d,Vector e
e) ->
( Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
NonEmptyVector Vector a
a
, Vector b -> NonEmptyVector b
forall a. Vector a -> NonEmptyVector a
NonEmptyVector Vector b
b
, Vector c -> NonEmptyVector c
forall a. Vector a -> NonEmptyVector a
NonEmptyVector Vector c
c
, Vector d -> NonEmptyVector d
forall a. Vector a -> NonEmptyVector a
NonEmptyVector Vector d
d
, Vector e -> NonEmptyVector e
forall a. Vector a -> NonEmptyVector a
NonEmptyVector Vector e
e
)
{-# INLINE unzip5 #-}
unzip6
:: NonEmptyVector (a, b, c, d, e, f)
-> ( NonEmptyVector a
, NonEmptyVector b
, NonEmptyVector c
, NonEmptyVector d
, NonEmptyVector e
, NonEmptyVector f
)
unzip6 :: NonEmptyVector (a, b, c, d, e, f)
-> (NonEmptyVector a, NonEmptyVector b, NonEmptyVector c,
NonEmptyVector d, NonEmptyVector e, NonEmptyVector f)
unzip6 (NonEmptyVector Vector (a, b, c, d, e, f)
v) = case Vector (a, b, c, d, e, f)
-> (Vector a, Vector b, Vector c, Vector d, Vector e, Vector f)
forall a b c d e f.
Vector (a, b, c, d, e, f)
-> (Vector a, Vector b, Vector c, Vector d, Vector e, Vector f)
V.unzip6 Vector (a, b, c, d, e, f)
v of
~(Vector a
a,Vector b
b,Vector c
c,Vector d
d,Vector e
e,Vector f
f) ->
( Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
NonEmptyVector Vector a
a
, Vector b -> NonEmptyVector b
forall a. Vector a -> NonEmptyVector a
NonEmptyVector Vector b
b
, Vector c -> NonEmptyVector c
forall a. Vector a -> NonEmptyVector a
NonEmptyVector Vector c
c
, Vector d -> NonEmptyVector d
forall a. Vector a -> NonEmptyVector a
NonEmptyVector Vector d
d
, Vector e -> NonEmptyVector e
forall a. Vector a -> NonEmptyVector a
NonEmptyVector Vector e
e
, Vector f -> NonEmptyVector f
forall a. Vector a -> NonEmptyVector a
NonEmptyVector Vector f
f
)
{-# INLINE unzip6 #-}
filter :: (a -> Bool) -> NonEmptyVector a -> Vector a
filter :: (a -> Bool) -> NonEmptyVector a -> Vector a
filter a -> Bool
f = (a -> Bool) -> Vector a -> Vector a
forall a. (a -> Bool) -> Vector a -> Vector a
V.filter a -> Bool
f (Vector a -> Vector a)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> Vector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE filter #-}
ifilter
:: (Int -> a -> Bool)
-> NonEmptyVector a
-> Vector a
ifilter :: (Int -> a -> Bool) -> NonEmptyVector a -> Vector a
ifilter Int -> a -> Bool
f = (Int -> a -> Bool) -> Vector a -> Vector a
forall a. (Int -> a -> Bool) -> Vector a -> Vector a
V.ifilter Int -> a -> Bool
f (Vector a -> Vector a)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> Vector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE ifilter #-}
filterM
:: Monad m
=> (a -> m Bool)
-> NonEmptyVector a
-> m (Vector a)
filterM :: (a -> m Bool) -> NonEmptyVector a -> m (Vector a)
filterM a -> m Bool
f = (a -> m Bool) -> Vector a -> m (Vector a)
forall (m :: * -> *) a.
Monad m =>
(a -> m Bool) -> Vector a -> m (Vector a)
V.filterM a -> m Bool
f (Vector a -> m (Vector a))
-> (NonEmptyVector a -> Vector a)
-> NonEmptyVector a
-> m (Vector a)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE filterM #-}
ifilterM
:: Monad m
=> (Int -> a -> m Bool)
-> NonEmptyVector a
-> m (Vector a)
ifilterM :: (Int -> a -> m Bool) -> NonEmptyVector a -> m (Vector a)
ifilterM Int -> a -> m Bool
f = (Vector (Int, a) -> Vector a)
-> m (Vector (Int, a)) -> m (Vector a)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (((Int, a) -> a) -> Vector (Int, a) -> Vector a
forall a b. (a -> b) -> Vector a -> Vector b
V.map (Int, a) -> a
forall a b. (a, b) -> b
snd)
(m (Vector (Int, a)) -> m (Vector a))
-> (NonEmptyVector a -> m (Vector (Int, a)))
-> NonEmptyVector a
-> m (Vector a)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((Int, a) -> m Bool) -> Vector (Int, a) -> m (Vector (Int, a))
forall (m :: * -> *) a.
Monad m =>
(a -> m Bool) -> Vector a -> m (Vector a)
V.filterM ((Int -> a -> m Bool) -> (Int, a) -> m Bool
forall a b c. (a -> b -> c) -> (a, b) -> c
uncurry Int -> a -> m Bool
f)
(Vector (Int, a) -> m (Vector (Int, a)))
-> (NonEmptyVector a -> Vector (Int, a))
-> NonEmptyVector a
-> m (Vector (Int, a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector a -> Vector (Int, a)
forall a. Vector a -> Vector (Int, a)
V.indexed
(Vector a -> Vector (Int, a))
-> (NonEmptyVector a -> Vector a)
-> NonEmptyVector a
-> Vector (Int, a)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE ifilterM #-}
uniq :: Eq a => NonEmptyVector a -> NonEmptyVector a
uniq :: NonEmptyVector a -> NonEmptyVector a
uniq = Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
NonEmptyVector (Vector a -> NonEmptyVector a)
-> (NonEmptyVector a -> Vector a)
-> NonEmptyVector a
-> NonEmptyVector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector a -> Vector a
forall a. Eq a => Vector a -> Vector a
V.uniq (Vector a -> Vector a)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> Vector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE uniq #-}
mapMaybe
:: (a -> Maybe b)
-> NonEmptyVector a
-> Vector b
mapMaybe :: (a -> Maybe b) -> NonEmptyVector a -> Vector b
mapMaybe a -> Maybe b
f = (a -> Maybe b) -> Vector a -> Vector b
forall a b. (a -> Maybe b) -> Vector a -> Vector b
V.mapMaybe a -> Maybe b
f (Vector a -> Vector b)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> Vector b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE mapMaybe #-}
imapMaybe
:: (Int -> a -> Maybe b)
-> NonEmptyVector a
-> Vector b
imapMaybe :: (Int -> a -> Maybe b) -> NonEmptyVector a -> Vector b
imapMaybe Int -> a -> Maybe b
f = (Int -> a -> Maybe b) -> Vector a -> Vector b
forall a b. (Int -> a -> Maybe b) -> Vector a -> Vector b
V.imapMaybe Int -> a -> Maybe b
f (Vector a -> Vector b)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> Vector b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE imapMaybe #-}
takeWhile :: (a -> Bool) -> NonEmptyVector a -> Vector a
takeWhile :: (a -> Bool) -> NonEmptyVector a -> Vector a
takeWhile a -> Bool
f = (a -> Bool) -> Vector a -> Vector a
forall a. (a -> Bool) -> Vector a -> Vector a
V.takeWhile a -> Bool
f (Vector a -> Vector a)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> Vector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE takeWhile #-}
dropWhile :: (a -> Bool) -> NonEmptyVector a -> Vector a
dropWhile :: (a -> Bool) -> NonEmptyVector a -> Vector a
dropWhile a -> Bool
f = (a -> Bool) -> Vector a -> Vector a
forall a. (a -> Bool) -> Vector a -> Vector a
V.dropWhile a -> Bool
f (Vector a -> Vector a)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> Vector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE dropWhile #-}
partition :: (a -> Bool) -> NonEmptyVector a -> (Vector a, Vector a)
partition :: (a -> Bool) -> NonEmptyVector a -> (Vector a, Vector a)
partition a -> Bool
f = (a -> Bool) -> Vector a -> (Vector a, Vector a)
forall a. (a -> Bool) -> Vector a -> (Vector a, Vector a)
V.partition a -> Bool
f (Vector a -> (Vector a, Vector a))
-> (NonEmptyVector a -> Vector a)
-> NonEmptyVector a
-> (Vector a, Vector a)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE partition #-}
unstablePartition
:: (a -> Bool)
-> NonEmptyVector a
-> (Vector a, Vector a)
unstablePartition :: (a -> Bool) -> NonEmptyVector a -> (Vector a, Vector a)
unstablePartition a -> Bool
f = (a -> Bool) -> Vector a -> (Vector a, Vector a)
forall a. (a -> Bool) -> Vector a -> (Vector a, Vector a)
V.unstablePartition a -> Bool
f (Vector a -> (Vector a, Vector a))
-> (NonEmptyVector a -> Vector a)
-> NonEmptyVector a
-> (Vector a, Vector a)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE unstablePartition #-}
span :: (a -> Bool) -> NonEmptyVector a -> (Vector a, Vector a)
span :: (a -> Bool) -> NonEmptyVector a -> (Vector a, Vector a)
span a -> Bool
f = (a -> Bool) -> Vector a -> (Vector a, Vector a)
forall a. (a -> Bool) -> Vector a -> (Vector a, Vector a)
V.span a -> Bool
f (Vector a -> (Vector a, Vector a))
-> (NonEmptyVector a -> Vector a)
-> NonEmptyVector a
-> (Vector a, Vector a)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE span #-}
break :: (a -> Bool) -> NonEmptyVector a -> (Vector a, Vector a)
break :: (a -> Bool) -> NonEmptyVector a -> (Vector a, Vector a)
break a -> Bool
f = (a -> Bool) -> Vector a -> (Vector a, Vector a)
forall a. (a -> Bool) -> Vector a -> (Vector a, Vector a)
V.break a -> Bool
f (Vector a -> (Vector a, Vector a))
-> (NonEmptyVector a -> Vector a)
-> NonEmptyVector a
-> (Vector a, Vector a)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE break #-}
elem :: Eq a => a -> NonEmptyVector a -> Bool
elem :: a -> NonEmptyVector a -> Bool
elem a
a = a -> Vector a -> Bool
forall a. Eq a => a -> Vector a -> Bool
V.elem a
a (Vector a -> Bool)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE elem #-}
notElem :: Eq a => a -> NonEmptyVector a -> Bool
notElem :: a -> NonEmptyVector a -> Bool
notElem a
a = a -> Vector a -> Bool
forall a. Eq a => a -> Vector a -> Bool
V.notElem a
a (Vector a -> Bool)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE notElem #-}
find :: (a -> Bool) -> NonEmptyVector a -> Maybe a
find :: (a -> Bool) -> NonEmptyVector a -> Maybe a
find a -> Bool
f = (a -> Bool) -> Vector a -> Maybe a
forall a. (a -> Bool) -> Vector a -> Maybe a
V.find a -> Bool
f (Vector a -> Maybe a)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> Maybe a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE find #-}
findIndex :: (a -> Bool) -> NonEmptyVector a -> Maybe Int
findIndex :: (a -> Bool) -> NonEmptyVector a -> Maybe Int
findIndex a -> Bool
f = (a -> Bool) -> Vector a -> Maybe Int
forall a. (a -> Bool) -> Vector a -> Maybe Int
V.findIndex a -> Bool
f (Vector a -> Maybe Int)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> Maybe Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE findIndex #-}
findIndices :: (a -> Bool) -> NonEmptyVector a -> Vector Int
findIndices :: (a -> Bool) -> NonEmptyVector a -> Vector Int
findIndices a -> Bool
f = (a -> Bool) -> Vector a -> Vector Int
forall a. (a -> Bool) -> Vector a -> Vector Int
V.findIndices a -> Bool
f (Vector a -> Vector Int)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> Vector Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE findIndices #-}
elemIndex :: Eq a => a -> NonEmptyVector a -> Maybe Int
elemIndex :: a -> NonEmptyVector a -> Maybe Int
elemIndex a
a = a -> Vector a -> Maybe Int
forall a. Eq a => a -> Vector a -> Maybe Int
V.elemIndex a
a (Vector a -> Maybe Int)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> Maybe Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE elemIndex #-}
elemIndices :: Eq a => a -> NonEmptyVector a -> Vector Int
elemIndices :: a -> NonEmptyVector a -> Vector Int
elemIndices a
a = a -> Vector a -> Vector Int
forall a. Eq a => a -> Vector a -> Vector Int
V.elemIndices a
a (Vector a -> Vector Int)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> Vector Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE elemIndices #-}
foldl :: (a -> b -> a) -> a -> NonEmptyVector b -> a
foldl :: (a -> b -> a) -> a -> NonEmptyVector b -> a
foldl a -> b -> a
f a
a = (a -> b -> a) -> a -> Vector b -> a
forall a b. (a -> b -> a) -> a -> Vector b -> a
V.foldl a -> b -> a
f a
a (Vector b -> a)
-> (NonEmptyVector b -> Vector b) -> NonEmptyVector b -> a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector b -> Vector b
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE foldl #-}
foldl1 :: (a -> a -> a) -> NonEmptyVector a -> a
foldl1 :: (a -> a -> a) -> NonEmptyVector a -> a
foldl1 a -> a -> a
f = (a -> a -> a) -> Vector a -> a
forall a. (a -> a -> a) -> Vector a -> a
V.foldl1 a -> a -> a
f (Vector a -> a)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE foldl1 #-}
foldl' :: (a -> b -> a) -> a -> NonEmptyVector b -> a
foldl' :: (a -> b -> a) -> a -> NonEmptyVector b -> a
foldl' a -> b -> a
f a
a = (a -> b -> a) -> a -> Vector b -> a
forall a b. (a -> b -> a) -> a -> Vector b -> a
V.foldl' a -> b -> a
f a
a (Vector b -> a)
-> (NonEmptyVector b -> Vector b) -> NonEmptyVector b -> a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector b -> Vector b
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE foldl' #-}
foldl1' :: (a -> a -> a) -> NonEmptyVector a -> a
foldl1' :: (a -> a -> a) -> NonEmptyVector a -> a
foldl1' a -> a -> a
f = (a -> a -> a) -> Vector a -> a
forall a. (a -> a -> a) -> Vector a -> a
V.foldl1' a -> a -> a
f (Vector a -> a)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE foldl1' #-}
foldr :: (a -> b -> b) -> b -> NonEmptyVector a -> b
foldr :: (a -> b -> b) -> b -> NonEmptyVector a -> b
foldr a -> b -> b
f b
b = (a -> b -> b) -> b -> Vector a -> b
forall a b. (a -> b -> b) -> b -> Vector a -> b
V.foldr a -> b -> b
f b
b (Vector a -> b)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE foldr #-}
foldr1 :: (a -> a -> a) -> NonEmptyVector a -> a
foldr1 :: (a -> a -> a) -> NonEmptyVector a -> a
foldr1 a -> a -> a
f = (a -> a -> a) -> Vector a -> a
forall a. (a -> a -> a) -> Vector a -> a
V.foldr1 a -> a -> a
f (Vector a -> a)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE foldr1 #-}
foldr' :: (a -> b -> b) -> b -> NonEmptyVector a -> b
foldr' :: (a -> b -> b) -> b -> NonEmptyVector a -> b
foldr' a -> b -> b
f b
b = (a -> b -> b) -> b -> Vector a -> b
forall a b. (a -> b -> b) -> b -> Vector a -> b
V.foldr' a -> b -> b
f b
b(Vector a -> b)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE foldr' #-}
foldr1' :: (a -> a -> a) -> NonEmptyVector a -> a
foldr1' :: (a -> a -> a) -> NonEmptyVector a -> a
foldr1' a -> a -> a
f = (a -> a -> a) -> Vector a -> a
forall a. (a -> a -> a) -> Vector a -> a
V.foldr1' a -> a -> a
f (Vector a -> a)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE foldr1' #-}
ifoldl :: (a -> Int -> b -> a) -> a -> NonEmptyVector b -> a
ifoldl :: (a -> Int -> b -> a) -> a -> NonEmptyVector b -> a
ifoldl a -> Int -> b -> a
f a
a = (a -> Int -> b -> a) -> a -> Vector b -> a
forall a b. (a -> Int -> b -> a) -> a -> Vector b -> a
V.ifoldl a -> Int -> b -> a
f a
a (Vector b -> a)
-> (NonEmptyVector b -> Vector b) -> NonEmptyVector b -> a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector b -> Vector b
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE ifoldl #-}
ifoldl' :: (a -> Int -> b -> a) -> a -> NonEmptyVector b -> a
ifoldl' :: (a -> Int -> b -> a) -> a -> NonEmptyVector b -> a
ifoldl' a -> Int -> b -> a
f a
a = (a -> Int -> b -> a) -> a -> Vector b -> a
forall a b. (a -> Int -> b -> a) -> a -> Vector b -> a
V.ifoldl' a -> Int -> b -> a
f a
a (Vector b -> a)
-> (NonEmptyVector b -> Vector b) -> NonEmptyVector b -> a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector b -> Vector b
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE ifoldl' #-}
ifoldr :: (Int -> a -> b -> b) -> b -> NonEmptyVector a -> b
ifoldr :: (Int -> a -> b -> b) -> b -> NonEmptyVector a -> b
ifoldr Int -> a -> b -> b
f b
b = (Int -> a -> b -> b) -> b -> Vector a -> b
forall a b. (Int -> a -> b -> b) -> b -> Vector a -> b
V.ifoldr Int -> a -> b -> b
f b
b (Vector a -> b)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE ifoldr #-}
ifoldr' :: (Int -> a -> b -> b) -> b -> NonEmptyVector a -> b
ifoldr' :: (Int -> a -> b -> b) -> b -> NonEmptyVector a -> b
ifoldr' Int -> a -> b -> b
f b
b = (Int -> a -> b -> b) -> b -> Vector a -> b
forall a b. (Int -> a -> b -> b) -> b -> Vector a -> b
V.ifoldr' Int -> a -> b -> b
f b
b (Vector a -> b)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE ifoldr' #-}
all :: (a -> Bool) -> NonEmptyVector a -> Bool
all :: (a -> Bool) -> NonEmptyVector a -> Bool
all a -> Bool
f = (a -> Bool) -> Vector a -> Bool
forall a. (a -> Bool) -> Vector a -> Bool
V.all a -> Bool
f (Vector a -> Bool)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE all #-}
any :: (a -> Bool) -> NonEmptyVector a -> Bool
any :: (a -> Bool) -> NonEmptyVector a -> Bool
any a -> Bool
f = (a -> Bool) -> Vector a -> Bool
forall a. (a -> Bool) -> Vector a -> Bool
V.any a -> Bool
f (Vector a -> Bool)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE any #-}
and :: NonEmptyVector Bool -> Bool
and :: NonEmptyVector Bool -> Bool
and = Vector Bool -> Bool
V.and (Vector Bool -> Bool)
-> (NonEmptyVector Bool -> Vector Bool)
-> NonEmptyVector Bool
-> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector Bool -> Vector Bool
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE and #-}
or :: NonEmptyVector Bool -> Bool
or :: NonEmptyVector Bool -> Bool
or = Vector Bool -> Bool
V.or (Vector Bool -> Bool)
-> (NonEmptyVector Bool -> Vector Bool)
-> NonEmptyVector Bool
-> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector Bool -> Vector Bool
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE or #-}
sum :: Num a => NonEmptyVector a -> a
sum :: NonEmptyVector a -> a
sum = Vector a -> a
forall a. Num a => Vector a -> a
V.sum (Vector a -> a)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE sum #-}
product :: Num a => NonEmptyVector a -> a
product :: NonEmptyVector a -> a
product = Vector a -> a
forall a. Num a => Vector a -> a
V.product (Vector a -> a)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE product #-}
maximum :: Ord a => NonEmptyVector a -> a
maximum :: NonEmptyVector a -> a
maximum = Vector a -> a
forall a. Ord a => Vector a -> a
V.maximum (Vector a -> a)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE maximum #-}
maximumBy :: (a -> a -> Ordering) -> NonEmptyVector a -> a
maximumBy :: (a -> a -> Ordering) -> NonEmptyVector a -> a
maximumBy a -> a -> Ordering
f = (a -> a -> Ordering) -> Vector a -> a
forall a. (a -> a -> Ordering) -> Vector a -> a
V.maximumBy a -> a -> Ordering
f (Vector a -> a)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE maximumBy #-}
minimum :: Ord a => NonEmptyVector a -> a
minimum :: NonEmptyVector a -> a
minimum = Vector a -> a
forall a. Ord a => Vector a -> a
V.minimum (Vector a -> a)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE minimum #-}
minimumBy :: (a -> a -> Ordering) -> NonEmptyVector a -> a
minimumBy :: (a -> a -> Ordering) -> NonEmptyVector a -> a
minimumBy a -> a -> Ordering
f = (a -> a -> Ordering) -> Vector a -> a
forall a. (a -> a -> Ordering) -> Vector a -> a
V.minimumBy a -> a -> Ordering
f (Vector a -> a)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE minimumBy #-}
minIndex :: Ord a => NonEmptyVector a -> Int
minIndex :: NonEmptyVector a -> Int
minIndex = Vector a -> Int
forall a. Ord a => Vector a -> Int
V.minIndex (Vector a -> Int)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE minIndex #-}
minIndexBy :: (a -> a -> Ordering) -> NonEmptyVector a -> Int
minIndexBy :: (a -> a -> Ordering) -> NonEmptyVector a -> Int
minIndexBy a -> a -> Ordering
f = (a -> a -> Ordering) -> Vector a -> Int
forall a. (a -> a -> Ordering) -> Vector a -> Int
V.minIndexBy a -> a -> Ordering
f (Vector a -> Int)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE minIndexBy #-}
maxIndex :: Ord a => NonEmptyVector a -> Int
maxIndex :: NonEmptyVector a -> Int
maxIndex = Vector a -> Int
forall a. Ord a => Vector a -> Int
V.maxIndex (Vector a -> Int)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE maxIndex #-}
maxIndexBy :: (a -> a -> Ordering) -> NonEmptyVector a -> Int
maxIndexBy :: (a -> a -> Ordering) -> NonEmptyVector a -> Int
maxIndexBy a -> a -> Ordering
f = (a -> a -> Ordering) -> Vector a -> Int
forall a. (a -> a -> Ordering) -> Vector a -> Int
V.maxIndexBy a -> a -> Ordering
f (Vector a -> Int)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE maxIndexBy #-}
foldM :: Monad m => (a -> b -> m a) -> a -> NonEmptyVector b -> m a
foldM :: (a -> b -> m a) -> a -> NonEmptyVector b -> m a
foldM a -> b -> m a
f a
a = (a -> b -> m a) -> a -> Vector b -> m a
forall (m :: * -> *) a b.
Monad m =>
(a -> b -> m a) -> a -> Vector b -> m a
V.foldM a -> b -> m a
f a
a (Vector b -> m a)
-> (NonEmptyVector b -> Vector b) -> NonEmptyVector b -> m a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector b -> Vector b
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE foldM #-}
ifoldM :: Monad m => (a -> Int -> b -> m a) -> a -> NonEmptyVector b -> m a
ifoldM :: (a -> Int -> b -> m a) -> a -> NonEmptyVector b -> m a
ifoldM a -> Int -> b -> m a
f a
a = (a -> Int -> b -> m a) -> a -> Vector b -> m a
forall (m :: * -> *) a b.
Monad m =>
(a -> Int -> b -> m a) -> a -> Vector b -> m a
V.ifoldM a -> Int -> b -> m a
f a
a (Vector b -> m a)
-> (NonEmptyVector b -> Vector b) -> NonEmptyVector b -> m a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector b -> Vector b
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE ifoldM #-}
foldM' :: Monad m => (a -> b -> m a) -> a -> NonEmptyVector b -> m a
foldM' :: (a -> b -> m a) -> a -> NonEmptyVector b -> m a
foldM' a -> b -> m a
f a
a = (a -> b -> m a) -> a -> Vector b -> m a
forall (m :: * -> *) a b.
Monad m =>
(a -> b -> m a) -> a -> Vector b -> m a
V.foldM' a -> b -> m a
f a
a (Vector b -> m a)
-> (NonEmptyVector b -> Vector b) -> NonEmptyVector b -> m a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector b -> Vector b
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE foldM' #-}
ifoldM' :: Monad m => (a -> Int -> b -> m a) -> a -> NonEmptyVector b -> m a
ifoldM' :: (a -> Int -> b -> m a) -> a -> NonEmptyVector b -> m a
ifoldM' a -> Int -> b -> m a
f a
a = (a -> Int -> b -> m a) -> a -> Vector b -> m a
forall (m :: * -> *) a b.
Monad m =>
(a -> Int -> b -> m a) -> a -> Vector b -> m a
V.ifoldM' a -> Int -> b -> m a
f a
a (Vector b -> m a)
-> (NonEmptyVector b -> Vector b) -> NonEmptyVector b -> m a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector b -> Vector b
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE ifoldM' #-}
fold1M :: Monad m => (a -> a -> m a) -> NonEmptyVector a -> m a
fold1M :: (a -> a -> m a) -> NonEmptyVector a -> m a
fold1M a -> a -> m a
f = (a -> a -> m a) -> Vector a -> m a
forall (m :: * -> *) a.
Monad m =>
(a -> a -> m a) -> Vector a -> m a
V.fold1M a -> a -> m a
f (Vector a -> m a)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> m a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE fold1M #-}
fold1M' :: Monad m => (a -> a -> m a) -> NonEmptyVector a -> m a
fold1M' :: (a -> a -> m a) -> NonEmptyVector a -> m a
fold1M' a -> a -> m a
f = (a -> a -> m a) -> Vector a -> m a
forall (m :: * -> *) a.
Monad m =>
(a -> a -> m a) -> Vector a -> m a
V.fold1M' a -> a -> m a
f (Vector a -> m a)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> m a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE fold1M' #-}
foldM_ :: Monad m => (a -> b -> m a) -> a -> NonEmptyVector b -> m ()
foldM_ :: (a -> b -> m a) -> a -> NonEmptyVector b -> m ()
foldM_ a -> b -> m a
f a
a = (a -> b -> m a) -> a -> Vector b -> m ()
forall (m :: * -> *) a b.
Monad m =>
(a -> b -> m a) -> a -> Vector b -> m ()
V.foldM_ a -> b -> m a
f a
a (Vector b -> m ())
-> (NonEmptyVector b -> Vector b) -> NonEmptyVector b -> m ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector b -> Vector b
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE foldM_ #-}
ifoldM_ :: Monad m => (a -> Int -> b -> m a) -> a -> NonEmptyVector b -> m ()
ifoldM_ :: (a -> Int -> b -> m a) -> a -> NonEmptyVector b -> m ()
ifoldM_ a -> Int -> b -> m a
f a
a = (a -> Int -> b -> m a) -> a -> Vector b -> m ()
forall (m :: * -> *) a b.
Monad m =>
(a -> Int -> b -> m a) -> a -> Vector b -> m ()
V.ifoldM_ a -> Int -> b -> m a
f a
a (Vector b -> m ())
-> (NonEmptyVector b -> Vector b) -> NonEmptyVector b -> m ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector b -> Vector b
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE ifoldM_ #-}
foldM'_ :: Monad m => (a -> b -> m a) -> a -> NonEmptyVector b -> m ()
foldM'_ :: (a -> b -> m a) -> a -> NonEmptyVector b -> m ()
foldM'_ a -> b -> m a
f a
a = (a -> b -> m a) -> a -> Vector b -> m ()
forall (m :: * -> *) a b.
Monad m =>
(a -> b -> m a) -> a -> Vector b -> m ()
V.foldM'_ a -> b -> m a
f a
a (Vector b -> m ())
-> (NonEmptyVector b -> Vector b) -> NonEmptyVector b -> m ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector b -> Vector b
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE foldM'_ #-}
ifoldM'_ :: Monad m => (a -> Int -> b -> m a) -> a -> NonEmptyVector b -> m ()
ifoldM'_ :: (a -> Int -> b -> m a) -> a -> NonEmptyVector b -> m ()
ifoldM'_ a -> Int -> b -> m a
f a
a = (a -> Int -> b -> m a) -> a -> Vector b -> m ()
forall (m :: * -> *) a b.
Monad m =>
(a -> Int -> b -> m a) -> a -> Vector b -> m ()
V.ifoldM'_ a -> Int -> b -> m a
f a
a (Vector b -> m ())
-> (NonEmptyVector b -> Vector b) -> NonEmptyVector b -> m ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector b -> Vector b
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE ifoldM'_ #-}
fold1M_ :: Monad m => (a -> a -> m a) -> NonEmptyVector a -> m ()
fold1M_ :: (a -> a -> m a) -> NonEmptyVector a -> m ()
fold1M_ a -> a -> m a
f = (a -> a -> m a) -> Vector a -> m ()
forall (m :: * -> *) a.
Monad m =>
(a -> a -> m a) -> Vector a -> m ()
V.fold1M_ a -> a -> m a
f (Vector a -> m ())
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> m ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE fold1M_ #-}
fold1M'_ :: Monad m => (a -> a -> m a) -> NonEmptyVector a -> m ()
fold1M'_ :: (a -> a -> m a) -> NonEmptyVector a -> m ()
fold1M'_ a -> a -> m a
f = (a -> a -> m a) -> Vector a -> m ()
forall (m :: * -> *) a.
Monad m =>
(a -> a -> m a) -> Vector a -> m ()
V.fold1M'_ a -> a -> m a
f (Vector a -> m ())
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> m ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE fold1M'_ #-}
sequence :: Monad m => NonEmptyVector (m a) -> m (NonEmptyVector a)
sequence :: NonEmptyVector (m a) -> m (NonEmptyVector a)
sequence = (Vector a -> NonEmptyVector a)
-> m (Vector a) -> m (NonEmptyVector a)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
NonEmptyVector (m (Vector a) -> m (NonEmptyVector a))
-> (NonEmptyVector (m a) -> m (Vector a))
-> NonEmptyVector (m a)
-> m (NonEmptyVector a)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector (m a) -> m (Vector a)
forall (m :: * -> *) a. Monad m => Vector (m a) -> m (Vector a)
V.sequence (Vector (m a) -> m (Vector a))
-> (NonEmptyVector (m a) -> Vector (m a))
-> NonEmptyVector (m a)
-> m (Vector a)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector (m a) -> Vector (m a)
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE sequence #-}
sequence_ :: Monad m => NonEmptyVector (m a) -> m ()
sequence_ :: NonEmptyVector (m a) -> m ()
sequence_ = Vector (m a) -> m ()
forall (m :: * -> *) a. Monad m => Vector (m a) -> m ()
V.sequence_ (Vector (m a) -> m ())
-> (NonEmptyVector (m a) -> Vector (m a))
-> NonEmptyVector (m a)
-> m ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector (m a) -> Vector (m a)
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE sequence_ #-}
prescanl :: (a -> b -> a) -> a -> NonEmptyVector b -> NonEmptyVector a
prescanl :: (a -> b -> a) -> a -> NonEmptyVector b -> NonEmptyVector a
prescanl a -> b -> a
f a
a = Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
NonEmptyVector (Vector a -> NonEmptyVector a)
-> (NonEmptyVector b -> Vector a)
-> NonEmptyVector b
-> NonEmptyVector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> b -> a) -> a -> Vector b -> Vector a
forall a b. (a -> b -> a) -> a -> Vector b -> Vector a
V.prescanl a -> b -> a
f a
a (Vector b -> Vector a)
-> (NonEmptyVector b -> Vector b) -> NonEmptyVector b -> Vector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector b -> Vector b
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE prescanl #-}
prescanl' :: (a -> b -> a) -> a -> NonEmptyVector b -> NonEmptyVector a
prescanl' :: (a -> b -> a) -> a -> NonEmptyVector b -> NonEmptyVector a
prescanl' a -> b -> a
f a
a = Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
NonEmptyVector (Vector a -> NonEmptyVector a)
-> (NonEmptyVector b -> Vector a)
-> NonEmptyVector b
-> NonEmptyVector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> b -> a) -> a -> Vector b -> Vector a
forall a b. (a -> b -> a) -> a -> Vector b -> Vector a
V.prescanl' a -> b -> a
f a
a (Vector b -> Vector a)
-> (NonEmptyVector b -> Vector b) -> NonEmptyVector b -> Vector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector b -> Vector b
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE prescanl' #-}
postscanl :: (a -> b -> a) -> a -> NonEmptyVector b -> NonEmptyVector a
postscanl :: (a -> b -> a) -> a -> NonEmptyVector b -> NonEmptyVector a
postscanl a -> b -> a
f a
a = Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
NonEmptyVector (Vector a -> NonEmptyVector a)
-> (NonEmptyVector b -> Vector a)
-> NonEmptyVector b
-> NonEmptyVector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> b -> a) -> a -> Vector b -> Vector a
forall a b. (a -> b -> a) -> a -> Vector b -> Vector a
V.postscanl a -> b -> a
f a
a (Vector b -> Vector a)
-> (NonEmptyVector b -> Vector b) -> NonEmptyVector b -> Vector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector b -> Vector b
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE postscanl #-}
postscanl' :: (a -> b -> a) -> a -> NonEmptyVector b -> NonEmptyVector a
postscanl' :: (a -> b -> a) -> a -> NonEmptyVector b -> NonEmptyVector a
postscanl' a -> b -> a
f a
a = Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
NonEmptyVector (Vector a -> NonEmptyVector a)
-> (NonEmptyVector b -> Vector a)
-> NonEmptyVector b
-> NonEmptyVector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> b -> a) -> a -> Vector b -> Vector a
forall a b. (a -> b -> a) -> a -> Vector b -> Vector a
V.postscanl' a -> b -> a
f a
a (Vector b -> Vector a)
-> (NonEmptyVector b -> Vector b) -> NonEmptyVector b -> Vector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector b -> Vector b
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE postscanl' #-}
scanl :: (a -> b -> a) -> a -> NonEmptyVector b -> NonEmptyVector a
scanl :: (a -> b -> a) -> a -> NonEmptyVector b -> NonEmptyVector a
scanl a -> b -> a
f a
a = Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
NonEmptyVector (Vector a -> NonEmptyVector a)
-> (NonEmptyVector b -> Vector a)
-> NonEmptyVector b
-> NonEmptyVector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> b -> a) -> a -> Vector b -> Vector a
forall a b. (a -> b -> a) -> a -> Vector b -> Vector a
V.scanl a -> b -> a
f a
a (Vector b -> Vector a)
-> (NonEmptyVector b -> Vector b) -> NonEmptyVector b -> Vector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector b -> Vector b
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE scanl #-}
scanl' :: (a -> b -> a) -> a -> NonEmptyVector b -> NonEmptyVector a
scanl' :: (a -> b -> a) -> a -> NonEmptyVector b -> NonEmptyVector a
scanl' a -> b -> a
f a
a = Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
NonEmptyVector (Vector a -> NonEmptyVector a)
-> (NonEmptyVector b -> Vector a)
-> NonEmptyVector b
-> NonEmptyVector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> b -> a) -> a -> Vector b -> Vector a
forall a b. (a -> b -> a) -> a -> Vector b -> Vector a
V.scanl' a -> b -> a
f a
a (Vector b -> Vector a)
-> (NonEmptyVector b -> Vector b) -> NonEmptyVector b -> Vector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector b -> Vector b
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE scanl' #-}
scanl1 :: (a -> a -> a) -> NonEmptyVector a -> NonEmptyVector a
scanl1 :: (a -> a -> a) -> NonEmptyVector a -> NonEmptyVector a
scanl1 a -> a -> a
f = Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
NonEmptyVector (Vector a -> NonEmptyVector a)
-> (NonEmptyVector a -> Vector a)
-> NonEmptyVector a
-> NonEmptyVector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> a -> a) -> Vector a -> Vector a
forall a. (a -> a -> a) -> Vector a -> Vector a
V.scanl1 a -> a -> a
f (Vector a -> Vector a)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> Vector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE scanl1 #-}
scanl1' :: (a -> a -> a) -> NonEmptyVector a -> NonEmptyVector a
scanl1' :: (a -> a -> a) -> NonEmptyVector a -> NonEmptyVector a
scanl1' a -> a -> a
f = Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
NonEmptyVector (Vector a -> NonEmptyVector a)
-> (NonEmptyVector a -> Vector a)
-> NonEmptyVector a
-> NonEmptyVector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> a -> a) -> Vector a -> Vector a
forall a. (a -> a -> a) -> Vector a -> Vector a
V.scanl1' a -> a -> a
f (Vector a -> Vector a)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> Vector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE scanl1' #-}
iscanl :: (Int -> a -> b -> a) -> a -> NonEmptyVector b -> NonEmptyVector a
iscanl :: (Int -> a -> b -> a) -> a -> NonEmptyVector b -> NonEmptyVector a
iscanl Int -> a -> b -> a
f a
a = Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
NonEmptyVector (Vector a -> NonEmptyVector a)
-> (NonEmptyVector b -> Vector a)
-> NonEmptyVector b
-> NonEmptyVector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Int -> a -> b -> a) -> a -> Vector b -> Vector a
forall a b. (Int -> a -> b -> a) -> a -> Vector b -> Vector a
V.iscanl Int -> a -> b -> a
f a
a (Vector b -> Vector a)
-> (NonEmptyVector b -> Vector b) -> NonEmptyVector b -> Vector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector b -> Vector b
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE iscanl #-}
iscanl' :: (Int -> a -> b -> a) -> a -> NonEmptyVector b -> NonEmptyVector a
iscanl' :: (Int -> a -> b -> a) -> a -> NonEmptyVector b -> NonEmptyVector a
iscanl' Int -> a -> b -> a
f a
a = Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
NonEmptyVector (Vector a -> NonEmptyVector a)
-> (NonEmptyVector b -> Vector a)
-> NonEmptyVector b
-> NonEmptyVector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Int -> a -> b -> a) -> a -> Vector b -> Vector a
forall a b. (Int -> a -> b -> a) -> a -> Vector b -> Vector a
V.iscanl' Int -> a -> b -> a
f a
a (Vector b -> Vector a)
-> (NonEmptyVector b -> Vector b) -> NonEmptyVector b -> Vector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector b -> Vector b
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE iscanl' #-}
prescanr :: (a -> b -> b) -> b -> NonEmptyVector a -> NonEmptyVector b
prescanr :: (a -> b -> b) -> b -> NonEmptyVector a -> NonEmptyVector b
prescanr a -> b -> b
f b
b = Vector b -> NonEmptyVector b
forall a. Vector a -> NonEmptyVector a
NonEmptyVector (Vector b -> NonEmptyVector b)
-> (NonEmptyVector a -> Vector b)
-> NonEmptyVector a
-> NonEmptyVector b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> b -> b) -> b -> Vector a -> Vector b
forall a b. (a -> b -> b) -> b -> Vector a -> Vector b
V.prescanr a -> b -> b
f b
b (Vector a -> Vector b)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> Vector b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE prescanr #-}
prescanr' :: (a -> b -> b) -> b -> NonEmptyVector a -> NonEmptyVector b
prescanr' :: (a -> b -> b) -> b -> NonEmptyVector a -> NonEmptyVector b
prescanr' a -> b -> b
f b
b = Vector b -> NonEmptyVector b
forall a. Vector a -> NonEmptyVector a
NonEmptyVector (Vector b -> NonEmptyVector b)
-> (NonEmptyVector a -> Vector b)
-> NonEmptyVector a
-> NonEmptyVector b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> b -> b) -> b -> Vector a -> Vector b
forall a b. (a -> b -> b) -> b -> Vector a -> Vector b
V.prescanr' a -> b -> b
f b
b (Vector a -> Vector b)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> Vector b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE prescanr' #-}
postscanr :: (a -> b -> b) -> b -> NonEmptyVector a -> NonEmptyVector b
postscanr :: (a -> b -> b) -> b -> NonEmptyVector a -> NonEmptyVector b
postscanr a -> b -> b
f b
b = Vector b -> NonEmptyVector b
forall a. Vector a -> NonEmptyVector a
NonEmptyVector (Vector b -> NonEmptyVector b)
-> (NonEmptyVector a -> Vector b)
-> NonEmptyVector a
-> NonEmptyVector b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> b -> b) -> b -> Vector a -> Vector b
forall a b. (a -> b -> b) -> b -> Vector a -> Vector b
V.postscanr a -> b -> b
f b
b (Vector a -> Vector b)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> Vector b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE postscanr #-}
postscanr' :: (a -> b -> b) -> b -> NonEmptyVector a -> NonEmptyVector b
postscanr' :: (a -> b -> b) -> b -> NonEmptyVector a -> NonEmptyVector b
postscanr' a -> b -> b
f b
b = Vector b -> NonEmptyVector b
forall a. Vector a -> NonEmptyVector a
NonEmptyVector (Vector b -> NonEmptyVector b)
-> (NonEmptyVector a -> Vector b)
-> NonEmptyVector a
-> NonEmptyVector b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> b -> b) -> b -> Vector a -> Vector b
forall a b. (a -> b -> b) -> b -> Vector a -> Vector b
V.postscanr' a -> b -> b
f b
b (Vector a -> Vector b)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> Vector b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE postscanr' #-}
scanr :: (a -> b -> b) -> b -> NonEmptyVector a -> NonEmptyVector b
scanr :: (a -> b -> b) -> b -> NonEmptyVector a -> NonEmptyVector b
scanr a -> b -> b
f b
b = Vector b -> NonEmptyVector b
forall a. Vector a -> NonEmptyVector a
NonEmptyVector (Vector b -> NonEmptyVector b)
-> (NonEmptyVector a -> Vector b)
-> NonEmptyVector a
-> NonEmptyVector b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> b -> b) -> b -> Vector a -> Vector b
forall a b. (a -> b -> b) -> b -> Vector a -> Vector b
V.scanr a -> b -> b
f b
b (Vector a -> Vector b)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> Vector b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE scanr #-}
scanr' :: (a -> b -> b) -> b -> NonEmptyVector a -> NonEmptyVector b
scanr' :: (a -> b -> b) -> b -> NonEmptyVector a -> NonEmptyVector b
scanr' a -> b -> b
f b
b = Vector b -> NonEmptyVector b
forall a. Vector a -> NonEmptyVector a
NonEmptyVector (Vector b -> NonEmptyVector b)
-> (NonEmptyVector a -> Vector b)
-> NonEmptyVector a
-> NonEmptyVector b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> b -> b) -> b -> Vector a -> Vector b
forall a b. (a -> b -> b) -> b -> Vector a -> Vector b
V.scanr' a -> b -> b
f b
b (Vector a -> Vector b)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> Vector b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE scanr' #-}
scanr1 :: (a -> a -> a) -> NonEmptyVector a -> NonEmptyVector a
scanr1 :: (a -> a -> a) -> NonEmptyVector a -> NonEmptyVector a
scanr1 a -> a -> a
f = Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
NonEmptyVector (Vector a -> NonEmptyVector a)
-> (NonEmptyVector a -> Vector a)
-> NonEmptyVector a
-> NonEmptyVector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> a -> a) -> Vector a -> Vector a
forall a. (a -> a -> a) -> Vector a -> Vector a
V.scanr1 a -> a -> a
f (Vector a -> Vector a)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> Vector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE scanr1 #-}
scanr1' :: (a -> a -> a) -> NonEmptyVector a -> NonEmptyVector a
scanr1' :: (a -> a -> a) -> NonEmptyVector a -> NonEmptyVector a
scanr1' a -> a -> a
f = Vector a -> NonEmptyVector a
forall a. Vector a -> NonEmptyVector a
NonEmptyVector (Vector a -> NonEmptyVector a)
-> (NonEmptyVector a -> Vector a)
-> NonEmptyVector a
-> NonEmptyVector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> a -> a) -> Vector a -> Vector a
forall a. (a -> a -> a) -> Vector a -> Vector a
V.scanr1' a -> a -> a
f (Vector a -> Vector a)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> Vector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE scanr1' #-}
iscanr :: (Int -> a -> b -> b) -> b -> NonEmptyVector a -> NonEmptyVector b
iscanr :: (Int -> a -> b -> b) -> b -> NonEmptyVector a -> NonEmptyVector b
iscanr Int -> a -> b -> b
f b
b = Vector b -> NonEmptyVector b
forall a. Vector a -> NonEmptyVector a
NonEmptyVector (Vector b -> NonEmptyVector b)
-> (NonEmptyVector a -> Vector b)
-> NonEmptyVector a
-> NonEmptyVector b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Int -> a -> b -> b) -> b -> Vector a -> Vector b
forall a b. (Int -> a -> b -> b) -> b -> Vector a -> Vector b
V.iscanr Int -> a -> b -> b
f b
b (Vector a -> Vector b)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> Vector b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE iscanr #-}
iscanr' :: (Int -> a -> b -> b) -> b -> NonEmptyVector a -> NonEmptyVector b
iscanr' :: (Int -> a -> b -> b) -> b -> NonEmptyVector a -> NonEmptyVector b
iscanr' Int -> a -> b -> b
f b
b = Vector b -> NonEmptyVector b
forall a. Vector a -> NonEmptyVector a
NonEmptyVector (Vector b -> NonEmptyVector b)
-> (NonEmptyVector a -> Vector b)
-> NonEmptyVector a
-> NonEmptyVector b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Int -> a -> b -> b) -> b -> Vector a -> Vector b
forall a b. (Int -> a -> b -> b) -> b -> Vector a -> Vector b
V.iscanr' Int -> a -> b -> b
f b
b (Vector a -> Vector b)
-> (NonEmptyVector a -> Vector a) -> NonEmptyVector a -> Vector b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmptyVector a -> Vector a
forall a. NonEmptyVector a -> Vector a
_neVec
{-# INLINE iscanr' #-}