module Core.Data.Group ( Subtract (..) , Group (..) ) where -- | Can be combined and subtracted. -- Not an algebraic group, since there's no @invert@ - you can only -- subtract values. class (Monoid a) => Subtract a where -- | Subtract the second value from the first. (\\) :: a -> a -> a -- | A 'Monoid' with a "negative" value. Adding a value is like -- subtracting its negative, and vice versa. The negative of empty is empty. class (Subtract a) => Group a where -- | The "negative" of this value. invert :: a -> a