X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=RWST.dcl;h=334df7e84ceb3180b9f6d8b3a6117acb7dc30ac3;hb=e0fd23079f1f63b83431afe78e9ec218d4609e9a;hp=1a5b3b2b60c586b20430f21e0b1c8e624a581a32;hpb=e402533a984929c6cd9a27efbc144313b7c33c8e;p=cc1516.git diff --git a/RWST.dcl b/RWST.dcl index 1a5b3b2..334df7e 100644 --- a/RWST.dcl +++ b/RWST.dcl @@ -7,8 +7,16 @@ from Data.Functor import class Functor from Data.Functor.Identity import :: Identity from Data.Monoid import class Monoid, class Semigroup +// The RWS monad :: RWS r w s a :== RWST r w s Identity a +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 + // The RWST monad transformer :: RWST r w s m a = RWST (r s -> m (a, s, w))