@@ -10,6 +10,7 @@ import Prelude
10
10
11
11
import Control.Alt (class Alt , (<|>))
12
12
import Control.Alternative (class Alternative )
13
+ import Control.Apply (lift2 )
13
14
import Control.Monad.Cont.Class (class MonadCont , callCC )
14
15
import Control.Monad.Eff.Class (class MonadEff , liftEff )
15
16
import Control.Monad.Error.Class (class MonadThrow , class MonadError , catchError , throwError )
@@ -23,6 +24,7 @@ import Control.MonadZero (class MonadZero)
23
24
import Control.Plus (class Plus , empty )
24
25
25
26
import Data.Distributive (class Distributive , distribute , collect )
27
+ import Data.Monoid (class Monoid , mempty )
26
28
import Data.Newtype (class Newtype )
27
29
28
30
-- | The reader monad transformer.
@@ -72,6 +74,12 @@ instance monadReaderT :: Monad m => Monad (ReaderT r m)
72
74
73
75
instance monadZeroReaderT :: MonadZero m => MonadZero (ReaderT r m )
74
76
77
+ instance semigroupReaderT :: (Apply m , Semigroup a ) => Semigroup (ReaderT s m a ) where
78
+ append = lift2 (<>)
79
+
80
+ instance monoidReaderT :: (Applicative m , Monoid a ) => Monoid (ReaderT s m a ) where
81
+ mempty = pure mempty
82
+
75
83
instance monadPlusReaderT :: MonadPlus m => MonadPlus (ReaderT r m )
76
84
77
85
instance monadTransReaderT :: MonadTrans (ReaderT r ) where
0 commit comments