@@ -6,6 +6,10 @@ import Prelude hiding (mapM, mapM_, sequence, sequence_, foldl)
6import Control.Monad.Identity hiding (mapM, mapM_, forM, forM_, sequence, sequence_)
6import Control.Monad.Identity hiding (mapM, mapM_, forM, forM_, sequence, sequence_)
7import Control.Monad.State.Strict hiding (mapM, mapM_, forM, forM_, sequence, sequence_)
7import Control.Monad.State.Strict hiding (mapM, mapM_, forM, forM_, sequence, sequence_)
8import Control.Monad.Reader hiding (mapM, mapM_, forM, forM_, sequence, sequence_)
8import Control.Monad.Reader hiding (mapM, mapM_, forM, forM_, sequence, sequence_)
9+import Control.Monad.Writer (WriterT())
10+import Control.Monad.Except (ExceptT())
11+import Control.Monad.Cont (ContT())
12+import Control.Monad.RWS (RWST())
9import Data.List.NonEmpty (NonEmpty (..))
13import Data.List.NonEmpty (NonEmpty (..))
10import Data.These
14import Data.These
11import Data.Align
15import Data.Align
@@ -67,6 +71,36 @@ instance MonadSample t m => MonadSample t (ReaderT r m) where
67instance MonadHold t m => MonadHold t (ReaderT r m) where
71instance MonadHold t m => MonadHold t (ReaderT r m) where
68 hold a0 = lift . hold a0
72 hold a0 = lift . hold a0
74+instance (MonadSample t m, Monoid r) => MonadSample t (WriterT r m) where
75+ sample = lift . sample
77+instance (MonadHold t m, Monoid r) => MonadHold t (WriterT r m) where
78+ hold a0 = lift . hold a0
80+instance MonadSample t m => MonadSample t (StateT s m) where
81+ sample = lift . sample
83+instance MonadHold t m => MonadHold t (StateT s m) where
84+ hold a0 = lift . hold a0
86+instance MonadSample t m => MonadSample t (ExceptT e m) where
87+ sample = lift . sample
89+instance MonadHold t m => MonadHold t (ExceptT e m) where
90+ hold a0 = lift . hold a0
92+instance (MonadSample t m, Monoid w) => MonadSample t (RWST r w s m) where
93+ sample = lift . sample
95+instance (MonadHold t m, Monoid w) => MonadHold t (RWST r w s m) where
96+ hold a0 = lift . hold a0
98+instance MonadSample t m => MonadSample t (ContT r m) where
99+ sample = lift . sample
101+instance MonadHold t m => MonadHold t (ContT r m) where
102+ hold a0 = lift . hold a0
70--------------------------------------------------------------------------------
104--------------------------------------------------------------------------------
71-- Convenience functions
105-- Convenience functions
72--------------------------------------------------------------------------------
106--------------------------------------------------------------------------------