-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Algebraic structures -- -- Algebraic structures @package alg @version 0.1.0.0 module Algebra class Semigroup a => Abelian a class Semigroup a => Idempotent a class Monoid a => Group a invert :: Group a => a -> a (+) :: Semigroup (Sum a) => a -> a -> a (-) :: (Semigroup (Sum a), Group (Sum a)) => a -> a -> a (*) :: Semigroup (Product a) => a -> a -> a (/) :: (Semigroup (Product a), Group (Product a)) => a -> a -> a instance Algebra.Group () instance (Algebra.Group a, Algebra.Group b) => Algebra.Group (a, b) instance (Algebra.Group a, Algebra.Group b, Algebra.Group c) => Algebra.Group (a, b, c) instance (Algebra.Group a, Algebra.Group b, Algebra.Group c, Algebra.Group d) => Algebra.Group (a, b, c, d) instance (Algebra.Group a, Algebra.Group b, Algebra.Group c, Algebra.Group d, Algebra.Group e) => Algebra.Group (a, b, c, d, e) instance Algebra.Group a => Algebra.Group (Data.Functor.Identity.Identity a) instance Algebra.Group a => Algebra.Group (Data.Monoid.Dual a) instance forall k (a :: k). Algebra.Group (Data.Proxy.Proxy a) instance forall k a (b :: k). Algebra.Group a => Algebra.Group (Data.Functor.Const.Const a b) instance Algebra.Group b => Algebra.Group (a -> b) instance Algebra.Group a => Algebra.Group (GHC.Types.IO a) instance Algebra.Group (Data.Monoid.Sum GHC.Integer.Type.Integer)