Skip to content
This repository was archived by the owner on Jan 17, 2020. It is now read-only.

Commit eb96f34

Browse files
authored
Merge pull request #6 from felixSchl/mtl-instances
Add MTL instances
2 parents ea2e9c4 + 1946aa5 commit eb96f34

File tree

3 files changed

+70
-2
lines changed

3 files changed

+70
-2
lines changed

bower.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
"purescript-newtype": "^2.0.0",
1616
"purescript-prelude": "^3.0.0",
1717
"purescript-tailrec": "^3.1.0",
18-
"purescript-transformers": "^3.2.0"
18+
"purescript-transformers": "^3.4.0"
1919
},
2020
"devDependencies": {
2121
"purescript-psci-support": "^3.0.0"

src/Control/Monad/IO/Class.purs

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,44 @@
11
module Control.Monad.IO.Class where
22

3+
import Data.Monoid (class Monoid)
34
import Control.Monad.IO (IO)
5+
import Control.Monad.Cont.Trans (ContT)
6+
import Control.Monad.Except.Trans (ExceptT)
7+
import Control.Monad.List.Trans (ListT)
8+
import Control.Monad.Maybe.Trans (MaybeT)
9+
import Control.Monad.Reader.Trans (ReaderT)
10+
import Control.Monad.RWS.Trans (RWST)
11+
import Control.Monad.State.Trans (StateT)
12+
import Control.Monad.Trans.Class (lift)
13+
import Control.Monad.Writer.Trans (WriterT)
414
import Prelude
515

616
class (Monad m) <= MonadIO m where
717
liftIO :: IO ~> m
818

919
instance monadIOIO :: MonadIO IO where
1020
liftIO = id
21+
22+
instance monadIOContT :: MonadIO m => MonadIO (ContT r m) where
23+
liftIO = lift <<< liftIO
24+
25+
instance monadIOExceptT :: MonadIO m => MonadIO (ExceptT e m) where
26+
liftIO = lift <<< liftIO
27+
28+
instance monadIOListT :: MonadIO m => MonadIO (ListT m) where
29+
liftIO = lift <<< liftIO
30+
31+
instance monadIOMaybe :: MonadIO m => MonadIO (MaybeT m) where
32+
liftIO = lift <<< liftIO
33+
34+
instance monadIOReader :: MonadIO m => MonadIO (ReaderT r m) where
35+
liftIO = lift <<< liftIO
36+
37+
instance monadIORWS :: (MonadIO m, Monoid w) => MonadIO (RWST r w s m) where
38+
liftIO = lift <<< liftIO
39+
40+
instance monadIOState :: MonadIO m => MonadIO (StateT s m) where
41+
liftIO = lift <<< liftIO
42+
43+
instance monadIOWriter :: (MonadIO m, Monoid w) => MonadIO (WriterT w m) where
44+
liftIO = lift <<< liftIO

src/Control/Monad/IOSync/Class.purs

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,19 @@
11
module Control.Monad.IOSync.Class where
22

3+
import Data.Monoid (class Monoid)
4+
import Data.Newtype (unwrap, wrap)
35
import Control.Monad.Eff.Class (liftEff)
46
import Control.Monad.IO (IO)
57
import Control.Monad.IOSync (IOSync)
6-
import Data.Newtype (unwrap, wrap)
8+
import Control.Monad.Cont.Trans (ContT)
9+
import Control.Monad.Except.Trans (ExceptT)
10+
import Control.Monad.List.Trans (ListT)
11+
import Control.Monad.Maybe.Trans (MaybeT)
12+
import Control.Monad.Reader.Trans (ReaderT)
13+
import Control.Monad.RWS.Trans (RWST)
14+
import Control.Monad.State.Trans (StateT)
15+
import Control.Monad.Trans.Class (lift)
16+
import Control.Monad.Writer.Trans (WriterT)
717
import Prelude
818

919
class (Monad m) <= MonadIOSync m where
@@ -14,3 +24,27 @@ instance monadIOSyncIOSync :: MonadIOSync IOSync where
1424

1525
instance monadIOSyncIO :: MonadIOSync IO where
1626
liftIOSync = wrap <<< liftEff <<< unwrap
27+
28+
instance monadIOSyncContT :: MonadIOSync m => MonadIOSync (ContT r m) where
29+
liftIOSync = lift <<< liftIOSync
30+
31+
instance monadIOSyncExceptT :: MonadIOSync m => MonadIOSync (ExceptT e m) where
32+
liftIOSync = lift <<< liftIOSync
33+
34+
instance monadIOSyncListT :: MonadIOSync m => MonadIOSync (ListT m) where
35+
liftIOSync = lift <<< liftIOSync
36+
37+
instance monadIOSyncMaybe :: MonadIOSync m => MonadIOSync (MaybeT m) where
38+
liftIOSync = lift <<< liftIOSync
39+
40+
instance monadIOSyncReader :: MonadIOSync m => MonadIOSync (ReaderT r m) where
41+
liftIOSync = lift <<< liftIOSync
42+
43+
instance monadIOSyncRWS :: (MonadIOSync m, Monoid w) => MonadIOSync (RWST r w s m) where
44+
liftIOSync = lift <<< liftIOSync
45+
46+
instance monadIOSyncState :: MonadIOSync m => MonadIOSync (StateT s m) where
47+
liftIOSync = lift <<< liftIOSync
48+
49+
instance monadIOSyncWriter :: (MonadIOSync m, Monoid w) => MonadIOSync (WriterT w m) where
50+
liftIOSync = lift <<< liftIOSync

0 commit comments

Comments
 (0)