Skip to content

Commit ad972e4

Browse files
authored
Merge pull request #86 from mlang/lazyRWST
Lazy instance for RWST
2 parents 81dd7fd + 5d1c988 commit ad972e4

File tree

1 file changed

+4
-0
lines changed

1 file changed

+4
-0
lines changed

src/Control/Monad/RWS/Trans.purs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import Prelude
1010

1111
import Control.Alt (class Alt, (<|>))
1212
import Control.Alternative (class Alternative)
13+
import Control.Lazy (class Lazy)
1314
import Control.Monad.Eff.Class (class MonadEff, liftEff)
1415
import Control.Monad.Error.Class (class MonadError, throwError, catchError)
1516
import Control.Monad.Reader.Class (class MonadAsk, class MonadReader)
@@ -81,6 +82,9 @@ instance monadRWST :: (Monad m, Monoid w) => Monad (RWST r w s m)
8182
instance monadTransRWST :: Monoid w => MonadTrans (RWST r w s) where
8283
lift m = RWST \_ s -> m >>= \a -> pure $ RWSResult s a mempty
8384

85+
instance lazyRWST :: Lazy (RWST r w s m a) where
86+
defer f = RWST \r s -> case f unit of RWST f' -> f' r s
87+
8488
instance monadEffRWS :: (Monoid w, MonadEff eff m) => MonadEff eff (RWST r w s m) where
8589
liftEff = lift <<< liftEff
8690

0 commit comments

Comments
 (0)