monoids-0.1.36: Data/Monoid/Sugar.hs
-----------------------------------------------------------------------------
-- |
-- Module : Data.Monoid.Additive.Sugar
-- Copyright : (c) Edward Kmett 2009
-- License : BSD-style
-- Maintainer : ekmett@gmail.com
-- Stability : experimental
-- Portability : portable
--
-- Syntactic sugar for working with a 'Monoid' and 'Multiplicative' instances
-- that conflicts with names from the "Prelude".
--
-- > import Prelude hiding ((+),(*),(^))
-- > import Data.Monoid.Sugar
--
-----------------------------------------------------------------------------
--
module Data.Monoid.Sugar
( module Data.Monoid.Multiplicative
, module Data.Ring.Semi.Natural
, (+)
, (*)
, (^)
) where
import Prelude hiding ((*),(^),(+))
import Data.Monoid.Multiplicative
import Data.Ring.Semi.Natural
import qualified Data.Monoid.Combinators as Monoid
infixl 6 +
infixl 7 *
(+) :: Monoid m => m -> m -> m
(+) = mappend
(*) :: Multiplicative r => r -> r -> r
(*) = times
(^) :: Multiplicative r => r -> Natural -> r
r ^ n = getLog (Monoid.replicate (Log r) n)