[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)
Monoid |
Monoid 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.CPSMonadRWS | Control.Monad.CPS.RWS | Control.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 => 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)
}