Skip to content

Commit f82e750

Browse files
committed
Merge pull request #27 from slamdata/transformer-instances
Add MonadAff instances for transformers
2 parents 1cdc413 + 05d336f commit f82e750

File tree

2 files changed

+51
-1
lines changed

2 files changed

+51
-1
lines changed

docs/Control.Monad.Aff.Class.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,15 @@ class MonadAff e m where
1010
##### Instances
1111
``` purescript
1212
instance monadAffAff :: MonadAff e (Aff e)
13+
instance monadAffContT :: (Monad m, MonadAff eff m) => MonadAff eff (ContT r m)
14+
instance monadAffError :: (Monad m, MonadAff eff m) => MonadAff eff (ErrorT e m)
15+
instance monadAffExceptT :: (Monad m, MonadAff eff m) => MonadAff eff (ExceptT e m)
16+
instance monadAffListT :: (Monad m, MonadAff eff m) => MonadAff eff (ListT m)
17+
instance monadAffMaybe :: (Monad m, MonadAff eff m) => MonadAff eff (MaybeT m)
18+
instance monadAffReader :: (Monad m, MonadAff eff m) => MonadAff eff (ReaderT r m)
19+
instance monadAffRWS :: (Monad m, Monoid w, MonadAff eff m) => MonadAff eff (RWST r w s m)
20+
instance monadAffState :: (Monad m, MonadAff eff m) => MonadAff eff (StateT s m)
21+
instance monadAffWriter :: (Monad m, Monoid w, MonadAff eff m) => MonadAff eff (WriterT w m)
1322
```
1423

1524

src/Control/Monad/Aff/Class.purs

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,50 @@
11
module Control.Monad.Aff.Class where
2-
import Prelude (id)
2+
3+
import Prelude
4+
35
import Control.Monad.Aff
6+
import Control.Monad.Cont.Trans (ContT())
7+
import Control.Monad.Error.Trans (ErrorT())
8+
import Control.Monad.Except.Trans (ExceptT())
9+
import Control.Monad.List.Trans (ListT())
10+
import Control.Monad.Maybe.Trans (MaybeT())
11+
import Control.Monad.Reader.Trans (ReaderT())
12+
import Control.Monad.RWS.Trans (RWST())
13+
import Control.Monad.State.Trans (StateT())
14+
import Control.Monad.Trans (lift)
15+
import Control.Monad.Writer.Trans (WriterT())
16+
17+
import Data.Monoid (Monoid)
418

519
class MonadAff e m where
620
liftAff :: forall a. Aff e a -> m a
721

822
instance monadAffAff :: MonadAff e (Aff e) where
923
liftAff = id
24+
25+
instance monadAffContT :: (Monad m, MonadAff eff m) => MonadAff eff (ContT r m) where
26+
liftAff = lift <<< liftAff
27+
28+
instance monadAffError :: (Monad m, MonadAff eff m) => MonadAff eff (ErrorT e m) where
29+
liftAff = lift <<< liftAff
30+
31+
instance monadAffExceptT :: (Monad m, MonadAff eff m) => MonadAff eff (ExceptT e m) where
32+
liftAff = lift <<< liftAff
33+
34+
instance monadAffListT :: (Monad m, MonadAff eff m) => MonadAff eff (ListT m) where
35+
liftAff = lift <<< liftAff
36+
37+
instance monadAffMaybe :: (Monad m, MonadAff eff m) => MonadAff eff (MaybeT m) where
38+
liftAff = lift <<< liftAff
39+
40+
instance monadAffReader :: (Monad m, MonadAff eff m) => MonadAff eff (ReaderT r m) where
41+
liftAff = lift <<< liftAff
42+
43+
instance monadAffRWS :: (Monad m, Monoid w, MonadAff eff m) => MonadAff eff (RWST r w s m) where
44+
liftAff = lift <<< liftAff
45+
46+
instance monadAffState :: (Monad m, MonadAff eff m) => MonadAff eff (StateT s m) where
47+
liftAff = lift <<< liftAff
48+
49+
instance monadAffWriter :: (Monad m, Monoid w, MonadAff eff m) => MonadAff eff (WriterT w m) where
50+
liftAff = lift <<< liftAff

0 commit comments

Comments
 (0)