yap-examples-0.1: examples of the algebraic classes in the yap package
Copyright(c) Ross Paterson 2023
LicenseBSD-style (see the file LICENSE)
Maintainer[email protected]
Stabilityprovisional
Portabilitytype-level literals
Safe HaskellNone
LanguageHaskell2010

Data.YAP.Vector

Description

An example instance of the algebraic classes: vectors.

Synopsis

Documentation

data Vector (n :: Nat) a Source #

Vectors on n elements

Instances

Instances details
Foldable (Vector n) Source # 
Instance details

Defined in Data.YAP.Vector

Methods

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

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

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

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

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

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

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

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

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

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

null :: Vector n a -> Bool #

length :: Vector n a -> Int #

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

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

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

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

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

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

Defined in Data.YAP.Vector

Methods

pure :: a -> Vector n a #

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

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

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

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

Functor (Vector n) Source # 
Instance details

Defined in Data.YAP.Vector

Methods

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

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

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

Defined in Data.YAP.Vector

Methods

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

show :: Vector n a -> String #

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

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

Defined in Data.YAP.Vector

Methods

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

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

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

Defined in Data.YAP.Vector

Methods

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

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

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

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

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

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

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

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

Defined in Data.YAP.Vector

Methods

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

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

gtimes :: (AbelianGroup b, ToInteger b) => b -> Vector n a -> Vector n a #

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

Defined in Data.YAP.Vector

Methods

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

zero :: Vector n a #

atimes :: ToInteger b => b -> Vector n a -> Vector n a #

vector :: forall (n :: Nat) a. (KnownNat n, AdditiveMonoid a) => [a] -> Vector n a Source #

Construct a vector from a list of coordinates, trimming or padding with zeros to obtain the required length.

unsafeVector :: forall a (n :: Nat). [a] -> Vector n a Source #

Construct a vector from a list of coordinates: valid only if the list has length n.

coordinates :: forall (n :: Nat) a. Vector n a -> [a] Source #

The coordinates of a vector

dot :: forall a (n :: Nat). Semiring a => Vector n a -> Vector n a -> a Source #

Dot product of two vectors.

sqnorm :: forall a (n :: Nat). Semiring a => Vector n a -> a Source #

Squared norm of a vector.