rrb-vector-0.2.2.0: Efficient RRB-Vectors
Safe HaskellSafe-Inferred
LanguageHaskell2010

Data.RRBVector.Internal.Array

Description

This is an internal module.

It provides a thin wrapper over Data.Primitive.SmallArray with \(O(1)\) slicing.

Warning: No bound checks are performed!

Documentation

data Array a Source #

Instances

Instances details
Foldable Array Source # 
Instance details

Defined in Data.RRBVector.Internal.Array

Methods

fold :: Monoid m => Array m -> m #

foldMap :: Monoid m => (a -> m) -> Array a -> m #

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

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

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

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

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

foldr1 :: (a -> a -> a) -> Array a -> a #

foldl1 :: (a -> a -> a) -> Array a -> a #

toList :: Array a -> [a] #

null :: Array a -> Bool #

length :: Array a -> Int #

elem :: Eq a => a -> Array a -> Bool #

maximum :: Ord a => Array a -> a #

minimum :: Ord a => Array a -> a #

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

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

NFData a => NFData (Array a) Source # 
Instance details

Defined in Data.RRBVector.Internal.Array

Methods

rnf :: Array a -> () #

ifoldrStep :: Int -> (a -> Int) -> (Int -> a -> b -> b) -> b -> Array a -> b Source #

ifoldlStep :: Int -> (a -> Int) -> (Int -> b -> a -> b) -> b -> Array a -> b Source #

ifoldrStep' :: Int -> (a -> Int) -> (Int -> a -> b -> b) -> b -> Array a -> b Source #

ifoldlStep' :: Int -> (a -> Int) -> (Int -> b -> a -> b) -> b -> Array a -> b Source #

from2 :: a -> a -> Array a Source #

replicate :: Int -> a -> Array a Source #

replicateSnoc :: Int -> a -> a -> Array a Source #

index :: Array a -> Int -> a Source #

head :: Array a -> a Source #

last :: Array a -> a Source #

update :: Array a -> Int -> a -> Array a Source #

adjust :: Array a -> Int -> (a -> a) -> Array a Source #

adjust' :: Array a -> Int -> (a -> a) -> Array a Source #

take :: Array a -> Int -> Array a Source #

drop :: Array a -> Int -> Array a Source #

splitAt :: Array a -> Int -> (Array a, Array a) Source #

snoc :: Array a -> a -> Array a Source #

cons :: Array a -> a -> Array a Source #

(++) :: Array a -> Array a -> Array a Source #

map :: (a -> b) -> Array a -> Array b Source #

map' :: (a -> b) -> Array a -> Array b Source #

imapStep :: Int -> (a -> Int) -> (Int -> a -> b) -> Array a -> Array b Source #

imapStep' :: Int -> (a -> Int) -> (Int -> a -> b) -> Array a -> Array b Source #

unzipWith :: (a -> (b, c)) -> Array a -> (Array b, Array c) Source #

traverse :: Applicative f => (a -> f b) -> Array a -> f (Array b) Source #

traverse' :: Applicative f => (a -> f b) -> Array a -> f (Array b) Source #

itraverseStep :: Applicative f => Int -> (a -> Int) -> (Int -> a -> f b) -> Array a -> f (Array b) Source #

itraverseStep' :: Applicative f => Int -> (a -> Int) -> (Int -> a -> f b) -> Array a -> f (Array b) Source #

new :: Int -> ST s (MutableArray s a) Source #

read :: MutableArray s a -> Int -> ST s a Source #

write :: MutableArray s a -> Int -> a -> ST s () Source #

freeze :: MutableArray s a -> Int -> Int -> ST s (Array a) Source #

thaw :: Array a -> Int -> Int -> ST s (MutableArray s a) Source #