module Pandora.Pattern.Object.Group (Group (..)) where

import Pandora.Pattern.Object.Monoid (Monoid)

{- |
> When providing a new instance, you should ensure it satisfies the two laws:
> * Right absorption: x + inverse x ≡ zero
> * Left absorption: inverse x + x ≡ zero
-}

class Monoid a => Group a where
        {-# MINIMAL inverse #-}
        inverse :: a -> a