rings-0.0.2.4: Groups, rings, semirings, and dioids.

Safe HaskellSafe
LanguageHaskell2010

Data.Semiring.Module

Synopsis

Documentation

lensRep :: Eq (Rep f) => Representable f => Rep f -> forall g. Functor g => (a -> g a) -> f a -> g (f a) Source #

grateRep :: Representable f => forall g. Functor g => (Rep f -> g a -> b) -> g (f a) -> f b Source #

fempty :: Monoid a => Representable f => f a Source #

The zero vector.

neg :: Group a => Functor f => f a -> f a Source #

Negation of a vector.

>>> neg (V2 2 4)
V2 (-2) (-4)

sum :: Semigroup a => Representable f => f a -> f a -> f a infixl 6 Source #

Sum of two vectors.

>>> V2 1 2 `sum` V2 3 4
V2 4 6
>>> V2 1 2 <> V2 3 4
V2 4 6
>>> V2 (V2 1 2) (V2 3 4) <> V2 (V2 1 2) (V2 3 4)
V2 (V2 2 4) (V2 6 8)

diff :: Group a => Representable f => f a -> f a -> f a infixl 6 Source #

Difference between two vectors.

>>> V2 4 5 `diff` V2 3 1
V2 1 4
>>> V2 4 5 << V2 3 1
V2 1 4

outer :: Semiring a => Functor f => Functor g => f a -> g a -> f (g a) Source #

Outer (tensor) product.

(<.>) :: Semiring a => Free f => f a -> f a -> a infixl 6 Source #

Dot product.

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

Squared l2 norm of a vector.

qd :: Ring a => Free f => f a -> f a -> a Source #

Squared l2 norm of the difference between two vectors.

lerp :: Ring a => Representable f => a -> f a -> f a -> f a Source #

Linearly interpolate between two vectors.

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

Dirac delta function.

unit :: Unital a => Free f => Rep f -> f a Source #

Create a unit vector.

>>> unit I21 :: V2 Int
V2 1 0
>>> unit I42 :: V4 Int
V4 0 1 0 0