import Prelude
import Control.Monad
-import Control.Monad.Monoid
import Control.Monad.Fix
import Control.Monad.Trans
import Control.Monad.Reader
import Control.Monad.Writer
import Control.Monad.State
-
+import Data.Monoid
newtype RWS r w s a = RWS { runRWS :: r -> s -> (a, s, w) }
execWriterT,
mapWriterT,
module Control.Monad,
- module Control.Monad.Monoid,
module Control.Monad.Fix,
module Control.Monad.Trans,
+ module Data.Monoid,
) where
import Prelude
import Control.Monad
-import Control.Monad.Monoid
import Control.Monad.Fix
import Control.Monad.Trans
import Control.Monad.Reader
+import Data.Monoid
-- ---------------------------------------------------------------------------
-- MonadWriter class
-----------------------------------------------------------------------------
-- |
--- Module : Control.Monad.Monoid
+-- Module : Data.Monoid
-- Copyright : (c) Andy Gill 2001,
-- (c) Oregon Graduate Institute of Science and Technology, 2001
-- License : BSD-style (see the file libraries/base/LICENSE)
--
-- Maintainer : libraries@haskell.org
-- Stability : experimental
--- Portability : non-portable ( requires mulit-parameter type classes )
+-- Portability : non-portable (requires extended type classes)
--
--- Declaration of the Monoid class,and instances for list and functions
+-- Declaration of the Monoid class, and instances for list and functions.
--
-- Inspired by the paper
-- /Functional Programming with Overloading and
-- Advanced School of Functional Programming, 1995.
-----------------------------------------------------------------------------
-module Control.Monad.Monoid (
+module Data.Monoid (
Monoid(..)
) where
import Prelude
-- ---------------------------------------------------------------------------
--- The Monoid class
+-- | The monoid class.
+-- A minimal complete definition must supply 'mempty' and 'mappend',
+-- and these should satisfy the monoid laws.
class Monoid a where
mempty :: a
+ -- ^ Identity of 'mappend'
mappend :: a -> a -> a
+ -- ^ An associative operation
mconcat :: [a] -> a
--- Now the default for mconcat. For most types, this
--- default will be used, but is included in the class definition so
--- that optimized version of mconcat can be provided
--- for specific types.
+ -- ^ Fold a list using the monoid.
+ -- For most types, the default definition for 'mconcat' will be
+ -- used, but the function is included in the class definition so
+ -- that an optimized version can be provided for specific types.
mconcat = foldr mappend mempty