Skip to content

Commit 995b266

Browse files
committed
Merge pull request #56 from ethul/topic/rwst-monad-error
Adding MonadError RWST instance
2 parents 3c44f0d + db41c09 commit 995b266

File tree

3 files changed

+7
-0
lines changed

3 files changed

+7
-0
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@
44
/bower_components/
55
/node_modules/
66
/output/
7+
/tmp/

docs/Control/Monad/RWS/Trans.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ instance monadReaderRWST :: (Monad m, Monoid w) => MonadReader r (RWST r w s m)
3737
instance monadStateRWST :: (Monad m, Monoid w) => MonadState s (RWST r w s m)
3838
instance monadWriterRWST :: (Monad m, Monoid w) => MonadWriter w (RWST r w s m)
3939
instance monadRWSRWST :: (Monad m, Monoid w) => MonadRWS r w s (RWST r w s m)
40+
instance monadErrorRWST :: (MonadError e m, Monoid w) => MonadError e (RWST r w s m)
4041
```
4142

4243
#### `runRWST`

src/Control/Monad/RWS/Trans.purs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import Data.Tuple
1414

1515
import Control.Monad.Trans
1616
import Control.Monad.Eff.Class
17+
import Control.Monad.Error.Class
1718
import Control.Monad.Reader.Class
1819
import Control.Monad.Writer.Class
1920
import Control.Monad.State.Class
@@ -91,3 +92,7 @@ instance monadWriterRWST :: (Monad m, Monoid w) => MonadWriter w (RWST r w s m)
9192
pass m = RWST \r s -> runRWST m r s >>= \{ result: Tuple a f, state: s', log: w} -> pure { state: s', result: a, log: f w }
9293

9394
instance monadRWSRWST :: (Monad m, Monoid w) => MonadRWS r w s (RWST r w s m)
95+
96+
instance monadErrorRWST :: (MonadError e m, Monoid w) => MonadError e (RWST r w s m) where
97+
throwError e = lift (throwError e)
98+
catchError m h = RWST $ \r s -> catchError (runRWST m r s) (\e -> runRWST (h e) r s)

0 commit comments

Comments
 (0)