strict-data-0.2.0.2: A collection of commonly used strict data structures

Safe HaskellNone
LanguageHaskell2010

Data.StrictVector

Synopsis

Documentation

data Vector a Source #

Instances

Monad Vector Source # 

Methods

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

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

return :: a -> Vector a #

fail :: String -> Vector a #

Functor Vector Source # 

Methods

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

(<$) :: a -> Vector b -> Vector a #

MonadFail Vector Source # 

Methods

fail :: String -> Vector a #

Applicative Vector Source # 

Methods

pure :: a -> Vector a #

(<*>) :: Vector (a -> b) -> Vector a -> Vector b #

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

(<*) :: Vector a -> Vector b -> Vector a #

Foldable Vector Source # 

Methods

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

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

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

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

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

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

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

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

toList :: Vector a -> [a] #

null :: Vector a -> Bool #

length :: Vector a -> Int #

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

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

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

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

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

Traversable Vector Source # 

Methods

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

sequenceA :: Applicative f => Vector (f a) -> f (Vector a) #

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

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

Alternative Vector Source # 

Methods

empty :: Vector a #

(<|>) :: Vector a -> Vector a -> Vector a #

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

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

MonadPlus Vector Source # 

Methods

mzero :: Vector a #

mplus :: Vector a -> Vector a -> Vector a #

Vector Vector a Source # 

Methods

basicUnsafeFreeze :: PrimMonad m => Mutable Vector (PrimState m) a -> m (Vector a) #

basicUnsafeThaw :: PrimMonad m => Vector a -> m (Mutable Vector (PrimState m) a) #

basicLength :: Vector a -> Int #

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

basicUnsafeIndexM :: Monad m => Vector a -> Int -> m a #

basicUnsafeCopy :: PrimMonad m => Mutable Vector (PrimState m) a -> Vector a -> m () #

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

IsList (Vector a) Source # 

Associated Types

type Item (Vector a) :: * #

Methods

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

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

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

Eq a => Eq (Vector a) Source # 

Methods

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

(/=) :: Vector a -> Vector a -> Bool #

Data a => Data (Vector a) Source # 

Methods

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

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

toConstr :: Vector a -> Constr #

dataTypeOf :: Vector a -> DataType #

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

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

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

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

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

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

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

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

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

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

Ord a => Ord (Vector a) Source # 

Methods

compare :: Vector a -> Vector a -> Ordering #

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

(<=) :: Vector a -> Vector a -> Bool #

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

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

max :: Vector a -> Vector a -> Vector a #

min :: Vector a -> Vector a -> Vector a #

Read a => Read (Vector a) Source # 
Show a => Show (Vector a) Source # 

Methods

showsPrec :: Int -> Vector a -> ShowS #

show :: Vector a -> String #

showList :: [Vector a] -> ShowS #

Monoid (Vector a) Source # 

Methods

mempty :: Vector a #

mappend :: Vector a -> Vector a -> Vector a #

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

Arbitrary a => Arbitrary (Vector a) Source # 

Methods

arbitrary :: Gen (Vector a) #

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

Hashable a => Hashable (Vector a) Source # 

Methods

hashWithSalt :: Int -> Vector a -> Int #

hash :: Vector a -> Int #

ToJSON a => ToJSON (Vector a) Source # 
FromJSON a => FromJSON (Vector a) Source # 
NFData a => NFData (Vector a) Source # 

Methods

rnf :: Vector a -> () #

type Mutable Vector Source # 
type Item (Vector a) Source # 
type Item (Vector a) = a

null :: Vector a -> Bool Source #

O(1) Test whether a vector if empty

length :: Vector a -> Int Source #

O(1) Yield the length of the vector.

(!) :: Vector a -> Int -> a Source #

O(1) Indexing

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

O(1) Safe indexing

head :: Vector a -> a Source #

O(1) First element

last :: Vector a -> a Source #

O(1) Last element

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

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

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

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

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

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

toHashSet :: (Eq a, Hashable a) => Vector a -> HashSet a Source #

dropWhileEnd :: (a -> Bool) -> Vector a -> Vector a Source #

dropWhileLookingAround :: (Maybe a -> a -> Maybe a -> Bool) -> Vector a -> Vector a Source #

fromSL :: SL a -> Vector a Source #

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

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

sortBy :: (a -> a -> Ordering) -> Vector a -> Vector a Source #

sortOn :: Ord b => (a -> b) -> Vector a -> Vector a Source #

groupBy :: (a -> a -> Bool) -> Vector a -> Vector (Vector a) Source #

groupOn :: Eq b => (a -> b) -> Vector a -> Vector (b, Vector a) Source #

toSL :: Vector a -> SL a Source #

updateVector :: Int -> a -> a -> Vector a -> Vector a Source #

updateVectorWith :: Int -> a -> (a -> a) -> Vector a -> Vector a Source #

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

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

theOnlyOne :: Vector a -> Maybe a Source #

Returns Just the only element of the vector if there is exactly one element or Nothing otherwise.