packages feed

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