----------------------------------------------------------------------------- -- | -- Module : Data.Group.Sugar -- Copyright : (c) Edward Kmett 2009 -- License : BSD-style -- Maintainer : ekmett@gmail.com -- Stability : experimental -- Portability : portable -- -- Syntactic sugar for working with groups that conflicts with names from the "Prelude". -- -- > import Prelude hiding ((-), (+), (*), (/), (^), (^^), negate, subtract, recip) -- > import Data.Group.Sugar -- ----------------------------------------------------------------------------- module Data.Group.Sugar ( module Data.Monoid.Sugar , module Data.Group , (-) , negate , subtract , (/) , (.\.) , (^^) , recip ) where import Data.Monoid.Sugar import Data.Monoid.Multiplicative (Log(..)) import Data.Group.Combinators as Group import Data.Group import Prelude hiding ((-), (+), (*), (/), (^^), negate, subtract, recip) infixl 8 / infixr 8 .\. infixl 7 - (-) :: Group g => g -> g -> g (-) = minus negate :: Group g => g -> g negate = gnegate subtract :: Group g => g -> g -> g subtract = gsubtract (/) :: MultiplicativeGroup g => g -> g -> g (/) = over (.\.) :: MultiplicativeGroup g => g -> g -> g (.\.) = under recip :: MultiplicativeGroup g => g -> g recip = grecip (^^) :: MultiplicativeGroup g => g -> Integer -> g g ^^ n = getLog (Group.replicate (Log g) n)