operational-class 0.2.0.2 → 0.3.0.0
raw patch · 2 files changed
+16/−22 lines, 2 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
- Control.Monad.Operational.Class: wrap :: MonadProgram instr m => Program instr (m a) -> m a
- Control.Monad.Operational.Class: wrapT :: (m ~ t n, Monad m, MonadTrans t, MonadProgram instr n) => Program instr (m a) -> m a
+ Control.Monad.Operational.Class: liftProgramTrans :: (Monad (t n), MonadTrans t, MonadProgram instr n) => Program instr a -> t n a
Files
operational-class.cabal view
@@ -2,7 +2,7 @@ -- documentation, see http://haskell.org/cabal/users-guide/ name: operational-class-version: 0.2.0.2+version: 0.3.0.0 synopsis: MonadProgram typeclass for the operational package -- description: homepage: https://github.com/srijs/haskell-operational-class
src/Control/Monad/Operational/Class.hs view
@@ -4,7 +4,6 @@ import Data.Monoid (Monoid) -import Control.Monad (liftM, join) import qualified Control.Monad.Operational as Operational import Control.Monad.Trans.Class (MonadTrans, lift) @@ -21,51 +20,46 @@ import Control.Monad.Trans.List (ListT) class Monad m => MonadProgram instr m | m -> instr where- wrap :: Operational.Program instr (m a) -> m a--wrapT :: (m ~ t n, Monad m, MonadTrans t, MonadProgram instr n) => Operational.Program instr (m a) -> m a-wrapT = join . lift . wrap . fmap return+ liftProgram :: Operational.Program instr a -> m a -liftProgram :: MonadProgram instr m => Operational.Program instr a -> m a-liftProgram p = wrap $ liftM return p+liftProgramTrans :: (Monad (t n), MonadTrans t, MonadProgram instr n) => Operational.Program instr a -> t n a+liftProgramTrans = lift . liftProgram singleton :: MonadProgram instr m => instr a -> m a singleton = liftProgram . Operational.singleton instance Monad m => MonadProgram instr (Operational.ProgramT instr m) where- wrap = eval . Operational.view- where eval (Operational.Return a) = a- eval (i Operational.:>>= k) = Operational.singleton i >>= wrap . k+ liftProgram = Operational.liftProgram instance (MonadProgram instr m) => MonadProgram instr (ReaderT e m) where- wrap = wrapT+ liftProgram = liftProgramTrans instance (MonadProgram instr m) => MonadProgram instr (Strict.StateT s m) where- wrap = wrapT+ liftProgram = liftProgramTrans instance (MonadProgram instr m) => MonadProgram instr (Lazy.StateT s m) where- wrap = wrapT+ liftProgram = liftProgramTrans instance (MonadProgram instr m) => MonadProgram instr (ContT r m) where- wrap = wrapT+ liftProgram = liftProgramTrans instance (MonadProgram instr m, Monoid w) => MonadProgram instr (Strict.WriterT w m) where- wrap = wrapT+ liftProgram = liftProgramTrans instance (MonadProgram instr m, Monoid w) => MonadProgram instr (Lazy.WriterT w m) where- wrap = wrapT+ liftProgram = liftProgramTrans instance (MonadProgram instr m, Monoid w) => MonadProgram instr (Strict.RWST r w s m) where- wrap = wrapT+ liftProgram = liftProgramTrans instance (MonadProgram instr m, Monoid w) => MonadProgram instr (Lazy.RWST r w s m) where- wrap = wrapT+ liftProgram = liftProgramTrans instance (MonadProgram instr m) => MonadProgram instr (MaybeT m) where- wrap = wrapT+ liftProgram = liftProgramTrans instance (MonadProgram instr m) => MonadProgram instr (IdentityT m) where- wrap = wrapT+ liftProgram = liftProgramTrans instance (MonadProgram instr m) => MonadProgram instr (ListT m) where- wrap = wrapT+ liftProgram = liftProgramTrans