-- Module : Control.Monad.RWS
-- Copyright : (c) Andy Gill 2001,
-- (c) Oregon Graduate Institute of Science and Technology, 2001
--- License : BSD-style (see the file libraries/core/LICENSE)
+-- License : BSD-style (see the file libraries/base/LICENSE)
--
-- Maintainer : libraries@haskell.org
-- Stability : experimental
--- Portability : non-portable ( requires mulit-parameter type classes,
--- requires functional dependencies )
+-- Portability : non-portable (multi-param classes, functional dependencies)
--
-- Declaration of the MonadRWS class.
--
-- Inspired by the paper
--- \em{Functional Programming with Overloading and
--- Higher-Order Polymorphism},
--- \A[HREF="http://www.cse.ogi.edu/~mpj"]{Mark P Jones},
--- Advanced School of Functional Programming, 1995.}
+-- /Functional Programming with Overloading and
+-- Higher-Order Polymorphism/,
+-- Mark P Jones (<http://www.cse.ogi.edu/~mpj/>)
+-- Advanced School of Functional Programming, 1995.
-----------------------------------------------------------------------------
module Control.Monad.RWS (
RWS(..),
- runRWS,
evalRWS,
execRWS,
mapRWS,
withRWS,
RWST(..),
- runRWST,
evalRWST,
execRWST,
mapRWST,
withRWST,
- module Control.Monad,
- module Control.Monad.Fix,
- module Control.Monad.Trans,
module Control.Monad.Reader,
module Control.Monad.Writer,
module Control.Monad.State,
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) }