| Copyright | (c) Andy Gill 2001 (c) Oregon Graduate Institute of Science and Technology 2001 |
|---|---|
| License | BSD-style (see the file LICENSE) |
| Maintainer | libraries@haskell.org |
| Stability | experimental |
| Portability | non-portable (multi-param classes, functional dependencies) |
| Safe Haskell | Safe |
| Language | Haskell98 |
Control.Monad.RWS.Strict
Description
Strict RWS monad.
Inspired by the paper Functional Programming with Overloading and Higher-Order Polymorphism, Mark P Jones (http://web.cecs.pdx.edu/~mpj/) Advanced School of Functional Programming, 1995.
Synopsis
- type RWS r w s = RWST r w s Identity
- rws :: (r -> s -> (a, s, w)) -> RWS r w s a
- runRWS :: RWS r w s a -> r -> s -> (a, s, w)
- evalRWS :: RWS r w s a -> r -> s -> (a, w)
- execRWS :: RWS r w s a -> r -> s -> (s, w)
- mapRWS :: ((a, s, w) -> (b, s, w')) -> RWS r w s a -> RWS r w' s b
- withRWS :: (r' -> s -> (r, s)) -> RWS r w s a -> RWS r' w s a
- newtype RWST r w s m a :: * -> * -> * -> (* -> *) -> * -> * = RWST {
- runRWST :: r -> s -> m (a, s, w)
- runRWST :: RWST r w s m a -> r -> s -> m (a, s, w)
- evalRWST :: Monad m => RWST r w s m a -> r -> s -> m (a, w)
- execRWST :: Monad m => RWST r w s m a -> r -> s -> m (s, w)
- mapRWST :: (m (a, s, w) -> n (b, s, w')) -> RWST r w s m a -> RWST r w' s n b
- withRWST :: (r' -> s -> (r, s)) -> RWST r w s m a -> RWST r' w s m a
- module Control.Monad.RWS.Class
- module Control.Monad
- module Control.Monad.Fix
- module Control.Monad.Trans
- module Data.Monoid
The RWS monad
type RWS r w s = RWST r w s Identity #
A monad containing an environment of type r, output of type w
and an updatable state of type s.
rws :: (r -> s -> (a, s, w)) -> RWS r w s a #
Construct an RWS computation from a function.
(The inverse of runRWS .)
runRWS :: RWS r w s a -> r -> s -> (a, s, w) #
Unwrap an RWS computation as a function.
(The inverse of rws .)
Arguments
RWS computation to execute
initial environment
initial value
final value and output
Evaluate a computation with the given initial state and environment, returning the final value and output, discarding the final state.
Arguments
RWS computation to execute
initial environment
initial value
final state and output
Evaluate a computation with the given initial state and environment, returning the final state and output, discarding the final value.
The RWST monad transformer
newtype RWST r w s m a :: * -> * -> * -> (* -> *) -> * -> * #
A monad transformer adding reading an environment of type r,
collecting an output of type w and updating a state of type s
to an inner monad m.
Instances
Methods
throwError :: e -> RWST r w s m a Source #
catchError :: RWST r w s m a -> (e -> RWST r w s m a) -> RWST r w s m a Source #
Arguments
computation to execute
initial environment
initial value
computation yielding final value and output
Evaluate a computation with the given initial state and environment, returning the final value and output, discarding the final state.
Arguments
computation to execute
initial environment
initial value
computation yielding final state and output
Evaluate a computation with the given initial state and environment, returning the final state and output, discarding the final value.
Strict Reader-writer-state monads
module Control.Monad.RWS.Class
module Control.Monad
module Control.Monad.Fix
module Control.Monad.Trans
module Data.Monoid