[doc update ekmett@gmail.com**20090412081532 Ignore-this: 26226f1604408fef566470d6f5fa535 ] { hunk ./doc/html/monad-cps/Control-Monad-CPS-RWS.html 145 +> w => MonadRWS r w s (RWS r w s)MonoidMonoid w => Applicative (RWS r w s)Control.Monad.CPS.Reader, Control.Monad.CPSControl.Monad.CPS.RWS, Control.Monad.CPS.Reader, Control.Monad.CPSControl.Monad.CPS.Reader, Control.Monad.CPSControl.Monad.CPS.RWS, Control.Monad.CPS.Reader, Control.Monad.CPSControl.Monad.CPS.Writer, Control.Monad.CPSControl.Monad.CPS.RWS, Control.Monad.CPS.Writer, Control.Monad.CPSControl.Monad.CPS.State, Control.Monad.CPSControl.Monad.CPS.RWS, Control.Monad.CPS.State, Control.Monad.CPSControl.Monad.CPS.State, Control.Monad.CPSControl.Monad.CPS.RWS, Control.Monad.CPS.State, Control.Monad.CPSControl.Monad.CPS.Writer, Control.Monad.CPSControl.Monad.CPS.RWS, Control.Monad.CPS.Writer, Control.Monad.CPSControl.Monad.CPS.Writer, Control.Monad.CPSControl.Monad.CPS.RWS, Control.Monad.CPS.Writer, Control.Monad.CPSControl.Monad.CPS.Reader, Control.Monad.CPSControl.Monad.CPS.RWS, Control.Monad.CPS.Reader, Control.Monad.CPSControl.Monad.CPS.State, Control.Monad.CPSControl.Monad.CPS.RWS, Control.Monad.CPS.State, Control.Monad.CPSControl.Monad.CPS.Reader, Control.Monad.CPSControl.Monad.CPS.RWS, Control.Monad.CPS.Reader, Control.Monad.CPSMonadRWSControl.Monad.CPS.RWSControl.Monad.CPS.State, Control.Monad.CPSControl.Monad.CPS.RWS, Control.Monad.CPS.State, Control.Monad.CPSControl.Monad.CPS.Writer, Control.Monad.CPSControl.Monad.CPS.RWS, Control.Monad.CPS.Writer, Control.Monad.CPSControl.Monad.CPS.Writer, Control.Monad.CPSControl.Monad.CPS.RWS, Control.Monad.CPS.Writer, Control.Monad.CPSControl.Monad.CPS.State, Control.Monad.CPSControl.Monad.CPS.RWS, Control.Monad.CPS.State, Control.Monad.CPSControl.Monad.CPS.Writer, Control.Monad.CPSControl.Monad.CPS.RWS, Control.Monad.CPS.Writer, Control.Monad.CPS , runRWS - ) where - -import Data.Monoid (Monoid(..)) -import Control.Monad.RWS.Class - -newtype RWS r w s a = RWS { unRWS :: forall o. (a -> w -> s -> o) -> r -> s -> o } - -instance Monoid w => Functor (RWS r w s) where - fmap f (RWS g) = RWS (\k -> g (\a -> k (f a))) + , module Control.Monad.RWS.Class + , runRWS + ) where + +import Data.Monoid (Monoid(..)) +import Control.Applicative +import Control.Monad +import Control.Monad.RWS.Class + +newtype RWS r w s a = RWS { unRWS :: forall o. (a -> w -> s -> o) -> r -> s -> o } hunk ./doc/html/monad-cps/src/Control-Monad-CPS-RWS.html 23 ---instance Monoid w => Applicative (RWS r w s) where --- pure a = RWS (\k _ -> k a mempty) --- RwS f <*> RWS x = RWS (\k r -> f (\f' s' w -> x (\x' s'' w' -> k (f' x') s'' (w `mappend` w')) r s')) - -instance Monoid w => Monad (RWS r w s) where - return a = RWS (\k _ -> k a mempty) - RWS g >>= f = RWS (\k r -> g (\a w -> unRWS (f a) (\b w' -> k b (w `mappend` w')) r) r) - -runRWS :: RWS r w s a -> r -> s -> (a, w, s) -runRWS (RWS f) = f (,,) +instance Monoid w => Functor (RWS r w s) where + fmap f (RWS g) = RWS (\k -> g (\a -> k (f a))) + +instance Monoid w => Applicative (RWS r w s) where + pure = return + (<*>) = ap + +instance Monoid w => Monad (RWS r w s) where + return a = RWS (\k _ -> k a mempty) + RWS g >>= f = RWS (\k r -> g (\a w -> unRWS (f a) (\b w' -> k b (w `mappend` w')) r) r) hunk ./doc/html/monad-cps/src/Control-Monad-CPS-RWS.html 34 -instance Monoid w => MonadState s (RWS r w s) where - get = RWS (\ k r s -> k s mempty s) - put s = RWS (\k _ _ -> k () mempty s) - -instance Monoid w => MonadWriter w (RWS r w s) where - tell w = RWS (\k _ -> k () w) - listen (RWS f) = RWS (\k -> f (\a w -> k (a,w) w)) - pass (RWS f) = RWS (\k -> f (\(a,p) w -> k a (p w))) - -instance Monoid w => MonadReader r (RWS r w s) where - ask = RWS (\k r -> k r mempty) - local f (RWS g) = RWS (\k r -> g k (f r)) +runRWS :: RWS r w s a -> r -> s -> (a, w, s) +runRWS (RWS f) = f (,,) + +instance Monoid w => MonadState s (RWS r w s) where + get = RWS (\ k r s -> k s mempty s) + put s = RWS (\k _ _ -> k () mempty s) + +instance Monoid w => MonadWriter w (RWS r w s) where + tell w = RWS (\k _ -> k () w) + listen (RWS f) = RWS (\k -> f (\a w -> k (a,w) w)) + pass (RWS f) = RWS (\k -> f (\(a,p) w -> k a (p w))) + +instance Monoid w => MonadReader r (RWS r w s) where + ask = RWS (\k r -> k r mempty) + local f (RWS g) = RWS (\k r -> g k (f r)) + +instance Monoid w => MonadRWS r w s (RWS r w s) }