Safe Haskell | Safe |
---|---|
Language | Haskell2010 |
Typeclasses for Group and Tensor, extending Monoid
.
Documentation
module Data.Monoid
class Monoid a => Group a where Source
A group is a monoid with an invert operation.
Intuition: ><
is to <>
what subtraction is to addition; invert
turns a
value into its complement (see Laws below), and corresponds with unary minus
in addition.
Laws:
a >< b == a <> (invert b) a >< mempty == a a >< a == mempty a <> (invert a) == mempty invert mempty == mempty
Nothing
class Group b => Tensor a b where Source
Tensor allows us to define a relationship between two types, the second one forming a Group. The intuition is that the first type models something like a "location", and the second (the group) models the relative distance between two locations. Examples of Tensors include date/time values (point in time) and timespans; positions in a vector space and displacement vectors; pitches and intervals in music.
Tensor provides three operations: ?<>
("tensor addition"), adding a
"distance" to a "location"; ?><
("tensor subtraction"), undoing the effect
of adding a "distance" to a "location", and >?<
, getting the "distance"
between two "locations".
Laws:
a ?<> (b >?< a) == b a ?<> (x <> y) == a ?<> x ?<> y a ?>< b == a ?<> (invert b) a ?<> (x >< y) == a ?<> x ?>< y