vector-sized-1.0.1.0: Size tagged vectors

Safe HaskellNone
LanguageHaskell2010

Data.Vector.Generic.Sized.Internal

Synopsis

Documentation

newtype Vector v (n :: Nat) a Source #

A wrapper to tag vectors with a type level length.

Be careful when using the constructor here to not construct sized vectors which have a different length than that specified in the type parameter!

Constructors

Vector (v a) 
Instances
Functor v => Functor (Vector v n) Source # 
Instance details

Methods

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

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

KnownNat n => Applicative (Vector Vector n) #

The Applicative instance for sized vectors does not have the same behaviour as the Applicative instance for the unsized vectors found in the vectors package. The instance defined here has the same behaviour as the ZipList instance.

Instance details

Methods

pure :: a -> Vector Vector0 n a #

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

liftA2 :: (a -> b -> c) -> Vector Vector0 n a -> Vector Vector0 n b -> Vector Vector0 n c #

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

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

Foldable v => Foldable (Vector v n) Source # 
Instance details

Methods

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

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

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

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

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

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

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

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

toList :: Vector v n a -> [a] #

null :: Vector v n a -> Bool #

length :: Vector v n a -> Int #

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

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

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

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

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

Traversable v => Traversable (Vector v n) Source # 
Instance details

Methods

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

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

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

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

KnownNat n => Distributive (Vector Vector n) # 
Instance details

Methods

distribute :: Functor f => f (Vector Vector0 n a) -> Vector Vector0 n (f a) #

collect :: Functor f => (a -> Vector Vector0 n b) -> f a -> Vector Vector0 n (f b) #

distributeM :: Monad m => m (Vector Vector0 n a) -> Vector Vector0 n (m a) #

collectM :: Monad m => (a -> Vector Vector0 n b) -> m a -> Vector Vector0 n (m b) #

KnownNat n => Representable (Vector Vector n) # 
Instance details

Associated Types

type Rep (Vector Vector n) :: * #

Methods

tabulate :: (Rep (Vector Vector0 n) -> a) -> Vector Vector0 n a #

index :: Vector Vector0 n a -> Rep (Vector Vector0 n) -> a #

Eq1 v => Eq1 (Vector v n) Source # 
Instance details

Methods

liftEq :: (a -> b -> Bool) -> Vector v n a -> Vector v n b -> Bool #

Ord1 v => Ord1 (Vector v n) Source # 
Instance details

Methods

liftCompare :: (a -> b -> Ordering) -> Vector v n a -> Vector v n b -> Ordering #

Show1 v => Show1 (Vector v n) Source # 
Instance details

Methods

liftShowsPrec :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> Int -> Vector v n a -> ShowS #

liftShowList :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> [Vector v n a] -> ShowS #

Eq (v a) => Eq (Vector v n a) Source # 
Instance details

Methods

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

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

(Vector v a, Floating a, KnownNat n) => Floating (Vector v n a) # 
Instance details

Methods

pi :: Vector v n a #

exp :: Vector v n a -> Vector v n a #

log :: Vector v n a -> Vector v n a #

sqrt :: Vector v n a -> Vector v n a #

(**) :: Vector v n a -> Vector v n a -> Vector v n a #

logBase :: Vector v n a -> Vector v n a -> Vector v n a #

sin :: Vector v n a -> Vector v n a #

cos :: Vector v n a -> Vector v n a #

tan :: Vector v n a -> Vector v n a #

asin :: Vector v n a -> Vector v n a #

acos :: Vector v n a -> Vector v n a #

atan :: Vector v n a -> Vector v n a #

sinh :: Vector v n a -> Vector v n a #

cosh :: Vector v n a -> Vector v n a #

tanh :: Vector v n a -> Vector v n a #

asinh :: Vector v n a -> Vector v n a #

acosh :: Vector v n a -> Vector v n a #

atanh :: Vector v n a -> Vector v n a #

log1p :: Vector v n a -> Vector v n a #

expm1 :: Vector v n a -> Vector v n a #

log1pexp :: Vector v n a -> Vector v n a #

log1mexp :: Vector v n a -> Vector v n a #

(Vector v a, Fractional a, KnownNat n) => Fractional (Vector v n a) # 
Instance details

Methods

(/) :: Vector v n a -> Vector v n a -> Vector v n a #

recip :: Vector v n a -> Vector v n a #

fromRational :: Rational -> Vector v n a #

(KnownNat n, Typeable v, Typeable a, Data (v a)) => Data (Vector v n a) Source # 
Instance details

Methods

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

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

toConstr :: Vector v n a -> Constr #

dataTypeOf :: Vector v n a -> DataType #

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

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

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

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

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

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

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

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

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

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

(Vector v a, Num a, KnownNat n) => Num (Vector v n a) # 
Instance details

Methods

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

(-) :: Vector v n a -> Vector v n a -> Vector v n a #

(*) :: Vector v n a -> Vector v n a -> Vector v n a #

negate :: Vector v n a -> Vector v n a #

abs :: Vector v n a -> Vector v n a #

signum :: Vector v n a -> Vector v n a #

fromInteger :: Integer -> Vector v n a #

Ord (v a) => Ord (Vector v n a) Source # 
Instance details

Methods

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

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

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

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

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

max :: Vector v n a -> Vector v n a -> Vector v n a #

min :: Vector v n a -> Vector v n a -> Vector v n a #

(KnownNat n, Vector v a, Read (v a)) => Read (Vector v n a) # 
Instance details

Methods

readsPrec :: Int -> ReadS (Vector v n a) #

readList :: ReadS [Vector v n a] #

readPrec :: ReadPrec (Vector v n a) #

readListPrec :: ReadPrec [Vector v n a] #

Show (v a) => Show (Vector v n a) Source # 
Instance details

Methods

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

show :: Vector v n a -> String #

showList :: [Vector v n a] -> ShowS #

Generic (Vector v n a) Source # 
Instance details

Associated Types

type Rep (Vector v n a) :: * -> * #

Methods

from :: Vector v n a -> Rep (Vector v n a) x #

to :: Rep (Vector v n a) x -> Vector v n a #

(Semigroup g, Vector v g) => Semigroup (Vector v n g) #

The Semigroup instance for sized vectors does not have the same behaviour as the Semigroup instance for the unsized vectors found in the vectors package. This instance has (<>) = zipWith (<>), but vectors uses concatentation.

Instance details

Methods

(<>) :: Vector v n g -> Vector v n g -> Vector v n g #

sconcat :: NonEmpty (Vector v n g) -> Vector v n g #

stimes :: Integral b => b -> Vector v n g -> Vector v n g #

(Monoid m, Vector v m, KnownNat n) => Monoid (Vector v n m) #

The Monoid instance for sized vectors does not have the same behaviour as the Monoid instance for the unsized vectors found in the vectors package. This instance has mempty = replicate mempty and mappend = zipWith mappend, where the vectors instance uses the empty vector and concatenation.

If mempty is not necessary, using the Semigroup instance over this Monoid will dodge the KnownNat constraint.

Instance details

Methods

mempty :: Vector v n m #

mappend :: Vector v n m -> Vector v n m -> Vector v n m #

mconcat :: [Vector v n m] -> Vector v n m #

(KnownNat n, Storable a, Vector v a) => Storable (Vector v n a) #

Any sized vector containing storable elements is itself storable.

Instance details

Methods

sizeOf :: Vector v n a -> Int #

alignment :: Vector v n a -> Int #

peekElemOff :: Ptr (Vector v n a) -> Int -> IO (Vector v n a) #

pokeElemOff :: Ptr (Vector v n a) -> Int -> Vector v n a -> IO () #

peekByteOff :: Ptr b -> Int -> IO (Vector v n a) #

pokeByteOff :: Ptr b -> Int -> Vector v n a -> IO () #

peek :: Ptr (Vector v n a) -> IO (Vector v n a) #

poke :: Ptr (Vector v n a) -> Vector v n a -> IO () #

NFData (v a) => NFData (Vector v n a) Source # 
Instance details

Methods

rnf :: Vector v n a -> () #

type Rep (Vector Vector n) # 
Instance details
type Rep (Vector Vector n) = Finite n
type Mutable (Vector v n) # 
Instance details
type Mutable (Vector v n) = MVector (Mutable v) n
type Rep (Vector v n a) Source # 
Instance details
type Rep (Vector v n a) = D1 (MetaData "Vector" "Data.Vector.Generic.Sized.Internal" "vector-sized-1.0.1.0-7uoLVmhkqtv8BA08dAoYm4" True) (C1 (MetaCons "Vector" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (v a))))