11module Control.Monad.IOSync.Class where
22
3+ import Data.Monoid (class Monoid )
4+ import Data.Newtype (unwrap , wrap )
35import Control.Monad.Eff.Class (liftEff )
46import Control.Monad.IO (IO )
57import 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 )
717import Prelude
818
919class (Monad m ) <= MonadIOSync m where
@@ -14,3 +24,27 @@ instance monadIOSyncIOSync :: MonadIOSync IOSync where
1424
1525instance 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