vector-sized-1.5.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

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 => 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 #

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

return :: a -> Vector Vector0 n a #

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 #

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

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 #

(<*>) :: 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

Defined in Data.Vector.Generic.Sized.Internal

Methods

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

foldMap :: Monoid m => (a -> m) -> Vector v n a -> 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

Defined in Data.Vector.Generic.Sized.Internal

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

Defined in Data.Vector.Generic.Sized

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

Defined in Data.Vector.Generic.Sized

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

Defined in Data.Vector.Generic.Sized.Internal

Methods

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

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 #

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 #

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

(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

Methods

extract :: Vector Vector0 n a -> a #

duplicate :: Vector Vector0 n a -> Vector Vector0 n (Vector Vector0 n a) #

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

(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 #

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

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

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 #

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

(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 #

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

Defined in Data.Vector.Generic.Sized

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

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

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 :: forall r r'. (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) Source # 
Instance details

Defined in Data.Vector.Generic.Sized

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

Defined in Data.Vector.Generic.Sized.Internal

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

Defined in Data.Vector.Generic.Sized

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

Defined in Data.Vector.Generic.Sized.Internal

Methods

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

show :: Vector v n a -> String #

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

(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] #

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

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

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

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

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

(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 #

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

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

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

(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 #

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

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

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

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

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

zeroBits :: Vector v n a #

bit :: Int -> Vector v n a #

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

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

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

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

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

bitSize :: Vector v n a -> Int #

isSigned :: Vector v n a -> Bool #

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

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

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

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

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

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

popCount :: Vector v n a -> Int #

(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

Methods

finiteBitSize :: Vector v n a -> Int #

countLeadingZeros :: Vector v n a -> Int #

countTrailingZeros :: Vector v n a -> Int #

(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 #

get :: Get (Vector v n a) #

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

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

Defined in Data.Vector.Generic.Sized.Internal

Methods

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

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

Defined in Data.Vector.Generic.Sized

Methods

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

hash :: Vector Vector0 n a -> Int #

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

Defined in Data.Vector.Generic.Sized

Methods

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

hash :: Vector Vector0 n a -> Int #

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

Defined in Data.Vector.Generic.Sized

Methods

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

hash :: Vector Vector0 n a -> Int #

(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)