-- | Extra functions for working with monoids. module Data.Monoid.Extra( module Data.Monoid, -- * Extra operations mwhen ) where import Data.Monoid -- | Like 'Control.Monad.when', but operating on a 'Monoid'. If the first argument -- is 'True' returns the second, otherwise returns 'mempty'. -- -- > mwhen True "test" == "test" -- > mwhen False "test" == "" mwhen :: Monoid a => Bool -> a -> a mwhen :: forall a. Monoid a => Bool -> a -> a mwhen Bool b a x = if Bool b then a x else forall a. Monoid a => a mempty