vector-sized-1.5.0: Size tagged vectors
Safe HaskellSafe-Inferred
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

Instances details
(Unbox a, KnownNat n) => Vector Vector (Vector Vector n a) Source # 
Instance details

Defined in Data.Vector.Unboxed.Mutable.Sized

(Unbox a, KnownNat n) => MVector MVector (Vector Vector n a) Source # 
Instance details

Defined in Data.Vector.Unboxed.Mutable.Sized

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

Defined in Data.Vector.Generic.Sized

Associated Types

type Rep (Vector Vector n) Source #

Methods

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

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

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

Defined in Data.Vector.Generic.Sized.Internal

Methods

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

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

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

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

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

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

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

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

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

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

null :: Vector v n a -> Bool Source #

length :: Vector v n a -> Int Source #

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

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

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

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

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

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

Defined in Data.Vector.Generic.Sized.Internal

Methods

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

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

Defined in Data.Vector.Generic.Sized.Internal

Methods

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

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

Defined in Data.Vector.Generic.Sized.Internal

Methods

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

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

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

Defined in Data.Vector.Generic.Sized.Internal

Methods

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

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

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

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

KnownNat n => Applicative (Vector Vector n) Source #

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

Defined in Data.Vector.Generic.Sized

Methods

pure :: a -> Vector Vector0 n a Source #

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

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

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

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

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

Defined in Data.Vector.Generic.Sized.Internal

Methods

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

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

KnownNat n => Monad (Vector Vector n) Source #

Treats a Vector n a as, essentially, a Finite n -> a, and emulates the Monad instance for that function.

join :: Vector n (Vector n a) -> Vector n a gets the diagonal from a square "matrix".

Instance details

Defined in Data.Vector.Generic.Sized

Methods

(>>=) :: Vector Vector0 n a -> (a -> Vector Vector0 n b) -> Vector Vector0 n b Source #

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

return :: a -> Vector Vector0 n a Source #

(KnownNat n, n ~ (1 + m)) => Comonad (Vector Vector n) Source #

Non-empty sized vectors are lawful comonads.

extract is head

duplicate generates all unique sequences of a vector with the same length as it, using wrap-around.

e.g. duplicate [1,2,3,4,5] = [[1,2,3,4,5], [2,3,4,5,1], [3,4,5,1,2], [4,5,1,2,3], [5,1,2,3,4]]

Instance details

Defined in Data.Vector.Generic.Sized

(KnownNat n, n ~ (1 + m)) => ComonadApply (Vector Vector n) Source # 
Instance details

Defined in Data.Vector.Generic.Sized

Methods

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

(@>) :: Vector Vector0 n a -> Vector Vector0 n b -> Vector Vector0 n b Source #

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

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

Defined in Data.Vector.Generic.Sized

Methods

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

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

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

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

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

Defined in Data.Vector.Generic.Sized.Internal

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) Source #

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

toConstr :: Vector v n a -> Constr Source #

dataTypeOf :: Vector v n a -> DataType Source #

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

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

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

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

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

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

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

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

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

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

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

Any sized vector containing Storable elements is itself Storable.

Instance details

Defined in Data.Vector.Generic.Sized

Methods

sizeOf :: Vector v n a -> Int Source #

alignment :: Vector v n a -> Int Source #

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

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

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

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

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

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

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

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

Defined in Data.Vector.Generic.Sized

Methods

mempty :: Vector v n m Source #

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

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

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

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

Defined in Data.Vector.Generic.Sized

Methods

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

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

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

(Vector v a, Bits (v a), Bits a, KnownNat n) => Bits (Vector v n a) Source #

Only usable if v a is itself an instance of Bits, like in the case with the bitvec library Bit type for unboxed vectors.

Instance details

Defined in Data.Vector.Generic.Sized

Methods

(.&.) :: Vector v n a -> Vector v n a -> Vector v n a Source #

(.|.) :: Vector v n a -> Vector v n a -> Vector v n a Source #

xor :: Vector v n a -> Vector v n a -> Vector v n a Source #

complement :: Vector v n a -> Vector v n a Source #

shift :: Vector v n a -> Int -> Vector v n a Source #

rotate :: Vector v n a -> Int -> Vector v n a Source #

zeroBits :: Vector v n a Source #

bit :: Int -> Vector v n a Source #

setBit :: Vector v n a -> Int -> Vector v n a Source #

clearBit :: Vector v n a -> Int -> Vector v n a Source #

complementBit :: Vector v n a -> Int -> Vector v n a Source #

testBit :: Vector v n a -> Int -> Bool Source #

bitSizeMaybe :: Vector v n a -> Maybe Int Source #

bitSize :: Vector v n a -> Int Source #

isSigned :: Vector v n a -> Bool Source #

shiftL :: Vector v n a -> Int -> Vector v n a Source #

unsafeShiftL :: Vector v n a -> Int -> Vector v n a Source #

shiftR :: Vector v n a -> Int -> Vector v n a Source #

unsafeShiftR :: Vector v n a -> Int -> Vector v n a Source #

rotateL :: Vector v n a -> Int -> Vector v n a Source #

rotateR :: Vector v n a -> Int -> Vector v n a Source #

popCount :: Vector v n a -> Int Source #

(Vector v a, Bits (v a), FiniteBits a, KnownNat n) => FiniteBits (Vector v n a) Source #

Treats a bit vector as n times the size of the stored bits, reflecting the Bits instance; does not necessarily reflect exact in-memory representation. See Storable instance to get information on the actual in-memry representation.

Instance details

Defined in Data.Vector.Generic.Sized

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

Defined in Data.Vector.Generic.Sized

Methods

pi :: Vector v n a Source #

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Defined in Data.Vector.Generic.Sized.Internal

Methods

range :: (Vector v n a, Vector v n a) -> [Vector v n a] Source #

index :: (Vector v n a, Vector v n a) -> Vector v n a -> Int Source #

unsafeIndex :: (Vector v n a, Vector v n a) -> Vector v n a -> Int Source #

inRange :: (Vector v n a, Vector v n a) -> Vector v n a -> Bool Source #

rangeSize :: (Vector v n a, Vector v n a) -> Int Source #

unsafeRangeSize :: (Vector v n a, Vector v n a) -> Int Source #

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

Defined in Data.Vector.Generic.Sized

Methods

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

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

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

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

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

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

fromInteger :: Integer -> Vector v n a Source #

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

Defined in Data.Vector.Generic.Sized

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

Defined in Data.Vector.Generic.Sized

Methods

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

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

fromRational :: Rational -> Vector v n a Source #

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

Defined in Data.Vector.Generic.Sized.Internal

Methods

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

show :: Vector v n a -> String Source #

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

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

Defined in Data.Vector.Generic.Sized

Methods

put :: Vector v n a -> Put Source #

get :: Get (Vector v n a) Source #

putList :: [Vector v n a] -> Put Source #

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

Defined in Data.Vector.Generic.Sized.Internal

Methods

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

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

Defined in Data.Vector.Generic.Sized.Internal

Methods

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

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

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

Defined in Data.Vector.Generic.Sized.Internal

Methods

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

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

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

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

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

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

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

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

Defined in Data.Vector.Generic.Sized

(Eq a, Hashable a, Storable a) => Hashable (Vector Vector n a) Source # 
Instance details

Defined in Data.Vector.Generic.Sized

(Eq a, Hashable a, Unbox a) => Hashable (Vector Vector n a) Source # 
Instance details

Defined in Data.Vector.Generic.Sized

(Unbox a, KnownNat n) => Unbox (Vector Vector n a) Source #

This instance allows to define sized matrices and tensors backed by continuous memory segments, which reduces memory allocations and relaxes pressure on garbage collector.

Instance details

Defined in Data.Vector.Unboxed.Mutable.Sized

newtype MVector s (Vector Vector n a) Source # 
Instance details

Defined in Data.Vector.Unboxed.Mutable.Sized

newtype MVector s (Vector Vector n a) = MV_Sized (MVector s a)
type Rep (Vector Vector n) Source # 
Instance details

Defined in Data.Vector.Generic.Sized

type Rep (Vector Vector n) = Finite n
type Mutable (Vector v n) Source # 
Instance details

Defined in Data.Vector.Generic.Sized

type Mutable (Vector v n) = MVector (Mutable v) n
newtype Vector (Vector Vector n a) Source # 
Instance details

Defined in Data.Vector.Unboxed.Mutable.Sized

newtype Vector (Vector Vector n a) = V_Sized (Vector a)