rings-0.0.3: Ring-like objects.

Safe HaskellSafe
LanguageHaskell2010

Data.Semimodule.Vector

Synopsis

Documentation

type Basis b f = (Free f, Rep f ~ b) Source #

(*.) :: Semimodule r a => r -> a -> a infixl 7 Source #

Left-multiply by a scalar.

(.*) :: Semimodule r a => a -> r -> a infixl 7 Source #

Right-multiply by a scalar.

(.*.) :: Free f => Foldable f => Semiring a => f a -> f a -> a infix 6 Source #

Dot product.

>>> V3 1 2 3 .*. V3 1 2 3
14

(><) :: (Representable f, Algebra r (Rep f)) => f r -> f r -> f r infixl 7 Source #

Multiplication operator on a free algebra.

In particular this is cross product on the I3 basis in R^3:

>>> V3 1 0 0 >< V3 0 1 0 >< V3 0 1 0 :: V3 Int
V3 (-1) 0 0
>>> V3 1 0 0 >< (V3 0 1 0 >< V3 0 1 0) :: V3 Int
V3 0 0 0

Caution in general (><) needn't be commutative, nor even associative.

The cross product in particular satisfies the following properties:

a >< a = mempty
a >< b = negate ( b >< a ) , 
a >< ( b <> c ) = ( a >< b ) <> ( a >< c ) , 
( r a ) >< b = a >< ( r b ) = r ( a >< b ) . 
a >< ( b >< c ) <> b >< ( c >< a ) <> c >< ( a >< b ) = mempty . 

See Jacobi identity.

For associative algebras, use (*) instead for clarity:

>>> (1 :+ 2) >< (3 :+ 4) :: Complex Int
(-5) :+ 10
>>> (1 :+ 2) * (3 :+ 4) :: Complex Int
(-5) :+ 10
>>> qi >< qj :: QuatM
Quaternion 0.000000 (V3 0.000000 0.000000 1.000000)
>>> qi * qj :: QuatM
Quaternion 0.000000 (V3 0.000000 0.000000 1.000000)

triple :: Free f => Foldable f => Algebra a (Rep f) => f a -> f a -> f a -> a Source #

Scalar triple product.

triple x y z = triple z x y = triple y z x
triple x y z = negate $ triple x z y = negate $ triple y x z
triple x x y = triple x y y = triple x y x = zero
(triple x y z) *. x = (x >< y) >< (x >< z)
>>> triple (V3 0 0 1) (V3 1 0 0) (V3 0 1 0) :: Double
1.0

lerp :: Module r a => r -> a -> a -> a Source #

Linearly interpolate between two vectors.

>>> u = V3 (1 :% 1) (2 :% 1) (3 :% 1) :: V3 Rational
>>> v = V3 (2 :% 1) (4 :% 1) (6 :% 1) :: V3 Rational
>>> r = 1 :% 2 :: Rational
>>> lerp r u v
V3 (6 % 4) (12 % 4) (18 % 4)

quadrance :: Free f => Foldable f => Semiring a => f a -> a Source #

Squared l2 norm of a vector.

qd :: Free f => Foldable f => Module a (f a) => f a -> f a -> a Source #

Squared l2 norm of the difference between two vectors.

dirac :: Eq i => Semiring a => i -> i -> a Source #

Dirac delta function.

data I4 Source #

Constructors

I41 
I42 
I43 
I44 
Instances
Eq I4 Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

(==) :: I4 -> I4 -> Bool #

(/=) :: I4 -> I4 -> Bool #

Ord I4 Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

compare :: I4 -> I4 -> Ordering #

(<) :: I4 -> I4 -> Bool #

(<=) :: I4 -> I4 -> Bool #

(>) :: I4 -> I4 -> Bool #

(>=) :: I4 -> I4 -> Bool #

max :: I4 -> I4 -> I4 #

min :: I4 -> I4 -> I4 #

Show I4 Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

showsPrec :: Int -> I4 -> ShowS #

show :: I4 -> String #

showList :: [I4] -> ShowS #

data V4 a Source #

Constructors

V4 !a !a !a !a 
Instances
Functor V4 Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

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

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

Applicative V4 Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

pure :: a -> V4 a #

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

liftA2 :: (a -> b -> c) -> V4 a -> V4 b -> V4 c #

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

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

Foldable V4 Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

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

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

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

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

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

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

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

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

toList :: V4 a -> [a] #

null :: V4 a -> Bool #

length :: V4 a -> Int #

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

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

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

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

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

Distributive V4 Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

distribute :: Functor f => f (V4 a) -> V4 (f a) #

collect :: Functor f => (a -> V4 b) -> f a -> V4 (f b) #

distributeM :: Monad m => m (V4 a) -> V4 (m a) #

collectM :: Monad m => (a -> V4 b) -> m a -> V4 (m b) #

Representable V4 Source # 
Instance details

Defined in Data.Semimodule.Vector

Associated Types

type Rep V4 :: Type #

Methods

tabulate :: (Rep V4 -> a) -> V4 a #

index :: V4 a -> Rep V4 -> a #

Foldable1 V4 Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

fold1 :: Semigroup m => V4 m -> m #

foldMap1 :: Semigroup m => (a -> m) -> V4 a -> m #

toNonEmpty :: V4 a -> NonEmpty a #

Semiring a => Semimodule a (V4 a) Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

(*.) :: a -> V4 a -> V4 a Source #

(.*) :: V4 a -> a -> V4 a Source #

Eq a => Eq (V4 a) Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

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

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

Ord a => Ord (V4 a) Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

compare :: V4 a -> V4 a -> Ordering #

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

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

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

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

max :: V4 a -> V4 a -> V4 a #

min :: V4 a -> V4 a -> V4 a #

Show a => Show (V4 a) Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

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

show :: V4 a -> String #

showList :: [V4 a] -> ShowS #

(Additive - Semigroup) a => Semigroup (Additive (V4 a)) Source #

Matrix addition.

>>> m24 1 2 3 4 5 6 7 8 <> m24 1 2 3 4 5 6 7 8 :: M24 Int
V2 (V4 2 4 6 8) (V4 10 12 14 16)
Instance details

Defined in Data.Semimodule.Vector

Methods

(<>) :: Additive (V4 a) -> Additive (V4 a) -> Additive (V4 a) #

sconcat :: NonEmpty (Additive (V4 a)) -> Additive (V4 a) #

stimes :: Integral b => b -> Additive (V4 a) -> Additive (V4 a) #

(Additive - Semigroup) a => Semigroup (V4 a) Source #

Vector addition.

>>> V4 1 2 3 4 <> V4 5 6 7 8
V4 6 8 10 12 
Instance details

Defined in Data.Semimodule.Vector

Methods

(<>) :: V4 a -> V4 a -> V4 a #

sconcat :: NonEmpty (V4 a) -> V4 a #

stimes :: Integral b => b -> V4 a -> V4 a #

(Additive - Monoid) a => Monoid (Additive (V4 a)) Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

mempty :: Additive (V4 a) #

mappend :: Additive (V4 a) -> Additive (V4 a) -> Additive (V4 a) #

mconcat :: [Additive (V4 a)] -> Additive (V4 a) #

(Additive - Monoid) a => Monoid (V4 a) Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

mempty :: V4 a #

mappend :: V4 a -> V4 a -> V4 a #

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

(Additive - Group) a => Group (Additive (V4 a)) Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

inv :: Additive (V4 a) -> Additive (V4 a) #

greplicate :: Integer -> Additive (V4 a) -> Additive (V4 a) #

(Additive - Group) a => Group (V4 a) Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

inv :: V4 a -> V4 a #

greplicate :: Integer -> V4 a -> V4 a #

(Additive - Group) a => Loop (Additive (V4 a)) Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

lempty :: Additive (V4 a) #

lreplicate :: Natural -> Additive (V4 a) -> Additive (V4 a) #

(Additive - Group) a => Loop (V4 a) Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

lempty :: V4 a #

lreplicate :: Natural -> V4 a -> V4 a #

(Additive - Group) a => Quasigroup (Additive (V4 a)) Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

(//) :: Additive (V4 a) -> Additive (V4 a) -> Additive (V4 a) #

(\\) :: Additive (V4 a) -> Additive (V4 a) -> Additive (V4 a) #

(Additive - Group) a => Quasigroup (V4 a) Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

(//) :: V4 a -> V4 a -> V4 a #

(\\) :: V4 a -> V4 a -> V4 a #

(Additive - Group) a => Magma (Additive (V4 a)) Source #

Matrix subtraction.

>>> V4 (V4 1 2 3) (V4 4 5 6) (V4 7 8 9) << V4 (V4 7 8 9) (V4 7 8 9) (V4 7 8 9)
V4 (V4 (-6) (-6) (-6)) (V4 (-3) (-3) (-3)) (V4 0 0 0)
Instance details

Defined in Data.Semimodule.Vector

Methods

(<<) :: Additive (V4 a) -> Additive (V4 a) -> Additive (V4 a) #

(Additive - Group) a => Magma (V4 a) Source #

Vector subtraction.

>>> V4 1 2 3 << V4 4 5 6
V4 (-3) (-3) (-3)
Instance details

Defined in Data.Semimodule.Vector

Methods

(<<) :: V4 a -> V4 a -> V4 a #

type Rep V4 Source # 
Instance details

Defined in Data.Semimodule.Vector

type Rep V4 = I4

data I3 Source #

Constructors

I31 
I32 
I33 
Instances
Eq I3 Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

(==) :: I3 -> I3 -> Bool #

(/=) :: I3 -> I3 -> Bool #

Ord I3 Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

compare :: I3 -> I3 -> Ordering #

(<) :: I3 -> I3 -> Bool #

(<=) :: I3 -> I3 -> Bool #

(>) :: I3 -> I3 -> Bool #

(>=) :: I3 -> I3 -> Bool #

max :: I3 -> I3 -> I3 #

min :: I3 -> I3 -> I3 #

Show I3 Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

showsPrec :: Int -> I3 -> ShowS #

show :: I3 -> String #

showList :: [I3] -> ShowS #

Field r => Division r QuaternionBasis Source # 
Instance details

Defined in Data.Semimodule.Vector

Ring r => Unital r QuaternionBasis Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

unitWith :: r -> QuaternionBasis -> r Source #

Ring r => Composition r QuaternionBasis Source # 
Instance details

Defined in Data.Semimodule.Vector

Ring r => Composition r I3 Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

conjugateWith :: (I3 -> r) -> I3 -> r Source #

normWith :: (I3 -> r) -> r Source #

Ring r => Algebra r QuaternionBasis Source # 
Instance details

Defined in Data.Semimodule.Vector

Ring r => Algebra r I3 Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

multiplyWith :: (I3 -> I3 -> r) -> I3 -> r Source #

Semigroup (Additive I3) Source # 
Instance details

Defined in Data.Semimodule.Vector

Monoid (Additive I3) Source # 
Instance details

Defined in Data.Semimodule.Vector

data V3 a Source #

Constructors

V3 !a !a !a 
Instances
Functor V3 Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

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

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

Applicative V3 Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

pure :: a -> V3 a #

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

liftA2 :: (a -> b -> c) -> V3 a -> V3 b -> V3 c #

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

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

Foldable V3 Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

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

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

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

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

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

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

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

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

toList :: V3 a -> [a] #

null :: V3 a -> Bool #

length :: V3 a -> Int #

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

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

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

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

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

Distributive V3 Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

distribute :: Functor f => f (V3 a) -> V3 (f a) #

collect :: Functor f => (a -> V3 b) -> f a -> V3 (f b) #

distributeM :: Monad m => m (V3 a) -> V3 (m a) #

collectM :: Monad m => (a -> V3 b) -> m a -> V3 (m b) #

Representable V3 Source # 
Instance details

Defined in Data.Semimodule.Vector

Associated Types

type Rep V3 :: Type #

Methods

tabulate :: (Rep V3 -> a) -> V3 a #

index :: V3 a -> Rep V3 -> a #

Foldable1 V3 Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

fold1 :: Semigroup m => V3 m -> m #

foldMap1 :: Semigroup m => (a -> m) -> V3 a -> m #

toNonEmpty :: V3 a -> NonEmpty a #

Semiring a => Semimodule a (V3 a) Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

(*.) :: a -> V3 a -> V3 a Source #

(.*) :: V3 a -> a -> V3 a Source #

Eq a => Eq (V3 a) Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

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

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

Ord a => Ord (V3 a) Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

compare :: V3 a -> V3 a -> Ordering #

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

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

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

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

max :: V3 a -> V3 a -> V3 a #

min :: V3 a -> V3 a -> V3 a #

Show a => Show (V3 a) Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

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

show :: V3 a -> String #

showList :: [V3 a] -> ShowS #

(Additive - Semigroup) a => Semigroup (Additive (V3 a)) Source #

Matrix addition.

>>> V2 (V3 1 2 3) (V3 4 5 6) <> V2 (V3 7 8 9) (V3 1 2 3)
V2 (V3 8 10 12) (V3 5 7 9)
Instance details

Defined in Data.Semimodule.Vector

Methods

(<>) :: Additive (V3 a) -> Additive (V3 a) -> Additive (V3 a) #

sconcat :: NonEmpty (Additive (V3 a)) -> Additive (V3 a) #

stimes :: Integral b => b -> Additive (V3 a) -> Additive (V3 a) #

(Additive - Semigroup) a => Semigroup (V3 a) Source #

Vector addition.

>>> V3 1 2 3 <> V3 4 5 6
V3 5 7 9
Instance details

Defined in Data.Semimodule.Vector

Methods

(<>) :: V3 a -> V3 a -> V3 a #

sconcat :: NonEmpty (V3 a) -> V3 a #

stimes :: Integral b => b -> V3 a -> V3 a #

(Additive - Monoid) a => Monoid (Additive (V3 a)) Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

mempty :: Additive (V3 a) #

mappend :: Additive (V3 a) -> Additive (V3 a) -> Additive (V3 a) #

mconcat :: [Additive (V3 a)] -> Additive (V3 a) #

(Additive - Monoid) a => Monoid (V3 a) Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

mempty :: V3 a #

mappend :: V3 a -> V3 a -> V3 a #

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

(Additive - Group) a => Group (Additive (V3 a)) Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

inv :: Additive (V3 a) -> Additive (V3 a) #

greplicate :: Integer -> Additive (V3 a) -> Additive (V3 a) #

(Additive - Group) a => Group (V3 a) Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

inv :: V3 a -> V3 a #

greplicate :: Integer -> V3 a -> V3 a #

(Additive - Group) a => Loop (Additive (V3 a)) Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

lempty :: Additive (V3 a) #

lreplicate :: Natural -> Additive (V3 a) -> Additive (V3 a) #

(Additive - Group) a => Loop (V3 a) Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

lempty :: V3 a #

lreplicate :: Natural -> V3 a -> V3 a #

(Additive - Group) a => Quasigroup (Additive (V3 a)) Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

(//) :: Additive (V3 a) -> Additive (V3 a) -> Additive (V3 a) #

(\\) :: Additive (V3 a) -> Additive (V3 a) -> Additive (V3 a) #

(Additive - Group) a => Quasigroup (V3 a) Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

(//) :: V3 a -> V3 a -> V3 a #

(\\) :: V3 a -> V3 a -> V3 a #

(Additive - Group) a => Magma (Additive (V3 a)) Source #

Matrix subtraction.

>>> V3 (V3 1 2 3) (V3 4 5 6) (V3 7 8 9) << V3 (V3 7 8 9) (V3 7 8 9) (V3 7 8 9)
V3 (V3 (-6) (-6) (-6)) (V3 (-3) (-3) (-3)) (V3 0 0 0)
Instance details

Defined in Data.Semimodule.Vector

Methods

(<<) :: Additive (V3 a) -> Additive (V3 a) -> Additive (V3 a) #

(Additive - Group) a => Magma (V3 a) Source #

Vector subtraction.

>>> V3 1 2 3 << V3 4 5 6
V3 (-3) (-3) (-3)
Instance details

Defined in Data.Semimodule.Vector

Methods

(<<) :: V3 a -> V3 a -> V3 a #

type Rep V3 Source # 
Instance details

Defined in Data.Semimodule.Vector

type Rep V3 = I3

data I2 Source #

Constructors

I21 
I22 
Instances
Eq I2 Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

(==) :: I2 -> I2 -> Bool #

(/=) :: I2 -> I2 -> Bool #

Ord I2 Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

compare :: I2 -> I2 -> Ordering #

(<) :: I2 -> I2 -> Bool #

(<=) :: I2 -> I2 -> Bool #

(>) :: I2 -> I2 -> Bool #

(>=) :: I2 -> I2 -> Bool #

max :: I2 -> I2 -> I2 #

min :: I2 -> I2 -> I2 #

Show I2 Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

showsPrec :: Int -> I2 -> ShowS #

show :: I2 -> String #

showList :: [I2] -> ShowS #

Semiring r => Composition r I2 Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

conjugateWith :: (I2 -> r) -> I2 -> r Source #

normWith :: (I2 -> r) -> r Source #

Semiring r => Algebra r I2 Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

multiplyWith :: (I2 -> I2 -> r) -> I2 -> r Source #

Semigroup (Additive I2) Source # 
Instance details

Defined in Data.Semimodule.Vector

Monoid (Additive I2) Source # 
Instance details

Defined in Data.Semimodule.Vector

data V2 a Source #

Constructors

V2 !a !a 
Instances
Functor V2 Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

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

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

Applicative V2 Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

pure :: a -> V2 a #

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

liftA2 :: (a -> b -> c) -> V2 a -> V2 b -> V2 c #

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

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

Foldable V2 Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

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

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

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

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

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

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

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

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

toList :: V2 a -> [a] #

null :: V2 a -> Bool #

length :: V2 a -> Int #

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

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

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

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

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

Distributive V2 Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

distribute :: Functor f => f (V2 a) -> V2 (f a) #

collect :: Functor f => (a -> V2 b) -> f a -> V2 (f b) #

distributeM :: Monad m => m (V2 a) -> V2 (m a) #

collectM :: Monad m => (a -> V2 b) -> m a -> V2 (m b) #

Representable V2 Source # 
Instance details

Defined in Data.Semimodule.Vector

Associated Types

type Rep V2 :: Type #

Methods

tabulate :: (Rep V2 -> a) -> V2 a #

index :: V2 a -> Rep V2 -> a #

Foldable1 V2 Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

fold1 :: Semigroup m => V2 m -> m #

foldMap1 :: Semigroup m => (a -> m) -> V2 a -> m #

toNonEmpty :: V2 a -> NonEmpty a #

Semiring a => Semimodule a (V2 a) Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

(*.) :: a -> V2 a -> V2 a Source #

(.*) :: V2 a -> a -> V2 a Source #

Eq a => Eq (V2 a) Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

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

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

Ord a => Ord (V2 a) Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

compare :: V2 a -> V2 a -> Ordering #

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

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

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

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

max :: V2 a -> V2 a -> V2 a #

min :: V2 a -> V2 a -> V2 a #

Show a => Show (V2 a) Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

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

show :: V2 a -> String #

showList :: [V2 a] -> ShowS #

(Additive - Semigroup) a => Semigroup (Additive (V2 a)) Source #

Matrix addition.

>>> m23 1 2 3 4 5 6 <> m23 7 8 9 1 2 3 :: M23 Int
V2 (V3 8 10 12) (V3 5 7 9)
Instance details

Defined in Data.Semimodule.Vector

Methods

(<>) :: Additive (V2 a) -> Additive (V2 a) -> Additive (V2 a) #

sconcat :: NonEmpty (Additive (V2 a)) -> Additive (V2 a) #

stimes :: Integral b => b -> Additive (V2 a) -> Additive (V2 a) #

(Additive - Semigroup) a => Semigroup (V2 a) Source #

Vector addition.

>>> V2 1 2 <> V2 3 4
V2 4 6
Instance details

Defined in Data.Semimodule.Vector

Methods

(<>) :: V2 a -> V2 a -> V2 a #

sconcat :: NonEmpty (V2 a) -> V2 a #

stimes :: Integral b => b -> V2 a -> V2 a #

(Additive - Monoid) a => Monoid (Additive (V2 a)) Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

mempty :: Additive (V2 a) #

mappend :: Additive (V2 a) -> Additive (V2 a) -> Additive (V2 a) #

mconcat :: [Additive (V2 a)] -> Additive (V2 a) #

(Additive - Monoid) a => Monoid (V2 a) Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

mempty :: V2 a #

mappend :: V2 a -> V2 a -> V2 a #

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

(Additive - Group) a => Group (Additive (V2 a)) Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

inv :: Additive (V2 a) -> Additive (V2 a) #

greplicate :: Integer -> Additive (V2 a) -> Additive (V2 a) #

(Additive - Group) a => Group (V2 a) Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

inv :: V2 a -> V2 a #

greplicate :: Integer -> V2 a -> V2 a #

(Additive - Group) a => Loop (Additive (V2 a)) Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

lempty :: Additive (V2 a) #

lreplicate :: Natural -> Additive (V2 a) -> Additive (V2 a) #

(Additive - Group) a => Loop (V2 a) Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

lempty :: V2 a #

lreplicate :: Natural -> V2 a -> V2 a #

(Additive - Group) a => Quasigroup (Additive (V2 a)) Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

(//) :: Additive (V2 a) -> Additive (V2 a) -> Additive (V2 a) #

(\\) :: Additive (V2 a) -> Additive (V2 a) -> Additive (V2 a) #

(Additive - Group) a => Quasigroup (V2 a) Source # 
Instance details

Defined in Data.Semimodule.Vector

Methods

(//) :: V2 a -> V2 a -> V2 a #

(\\) :: V2 a -> V2 a -> V2 a #

(Additive - Group) a => Magma (Additive (V2 a)) Source #

Matrix subtraction.

>>> m23 1 2 3 4 5 6 << m23 7 8 9 1 2 3 :: M23 Int
V2 (V3 (-6) (-6) (-6)) (V3 3 3 3)
Instance details

Defined in Data.Semimodule.Vector

Methods

(<<) :: Additive (V2 a) -> Additive (V2 a) -> Additive (V2 a) #

(Additive - Group) a => Magma (V2 a) Source #

Vector subtraction.

>>> V2 1 2 << V2 3 4
V2 (-2) (-2)
Instance details

Defined in Data.Semimodule.Vector

Methods

(<<) :: V2 a -> V2 a -> V2 a #

type Rep V2 Source # 
Instance details

Defined in Data.Semimodule.Vector

type Rep V2 = I2

i2 :: a -> a -> I2 -> a Source #

fillI2 :: Basis I2 f => a -> a -> f a Source #

i3 :: a -> a -> a -> I3 -> a Source #

fillI3 :: Basis I3 f => a -> a -> a -> f a Source #

i4 :: a -> a -> a -> a -> I4 -> a Source #

fillI4 :: Basis I4 f => a -> a -> a -> a -> f a Source #