-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | fast and simple operational monad -- -- This package provides tiny implementation of operational monad. @package minioperational @version 0.3 -- | A class for operational monads module Control.Monad.Operational.Class class Monad m => Operational t m singleton :: Operational t m => t a -> m a instance (Operational f m, Error e) => Operational f (ErrorT e m) instance Operational f m => Operational f (ListT m) instance Operational f m => Operational f (IdentityT m) instance Operational f m => Operational f (MaybeT m) instance (Operational f m, Monoid w) => Operational f (RWST r w s m) instance (Operational f m, Monoid w) => Operational f (RWST r w s m) instance (Operational f m, Monoid w) => Operational f (WriterT w m) instance (Operational f m, Monoid w) => Operational f (WriterT w m) instance Operational f m => Operational f (ContT r m) instance Operational f m => Operational f (StateT s m) instance Operational f m => Operational f (StateT s m) instance Operational f m => Operational f (ReaderT e m) -- | Simple operational monad transformer module Control.Monad.Trans.Operational.Mini newtype ProgramT t m a ProgramT :: (forall r. (a -> m r) -> (forall x. t x -> (x -> m r) -> m r) -> m r) -> ProgramT t m a unProgram :: ProgramT t m a -> forall r. (a -> m r) -> (forall x. t x -> (x -> m r) -> m r) -> m r -- | Interpret a Program using the given transformation. interpret :: Monad m => (forall x. t x -> m x) -> ProgramT t m a -> m a data ReifiedProgramT t (m :: * -> *) a Return :: a -> ReifiedProgramT t m a (:>>=) :: t a -> (a -> ReifiedProgramT t m b) -> ReifiedProgramT t m b Lift :: m a -> (a -> ReifiedProgramT t m b) -> ReifiedProgramT t m b fromReifiedT :: Monad m => ReifiedProgramT t m a -> ProgramT t m a instance MonadTrans (ReifiedProgramT t) instance Monad m => Operational t (ReifiedProgramT t m) instance Monad m => Monad (ReifiedProgramT t m) instance Monad m => Applicative (ReifiedProgramT t m) instance Monad m => Functor (ReifiedProgramT t m) instance MonadTrans (ProgramT t) instance Operational t (ProgramT t m) instance Monad (ProgramT t m) instance Applicative (ProgramT t m) instance Functor (ProgramT t m) -- | Simple operational monad module Control.Monad.Operational.Mini -- | Program t is a Monad that represents a sequence of imperatives. -- To construct imperatives, use singleton :: t a -> Program t -- a. newtype Program t a Program :: (forall r. (a -> r) -> (forall x. t x -> (x -> r) -> r) -> r) -> Program t a unProgram :: Program t a -> forall r. (a -> r) -> (forall x. t x -> (x -> r) -> r) -> r -- | Interpret a Program using the given transformation. interpret :: Monad m => (forall x. t x -> m x) -> Program t a -> m a cloneProgram :: Operational t m => Program t a -> m a -- | Reified version of Program. It is useful for testing. data ReifiedProgram t a Return :: a -> ReifiedProgram t a (:>>=) :: t a -> (a -> ReifiedProgram t b) -> ReifiedProgram t b fromReified :: ReifiedProgram t a -> Program t a instance Operational t (ReifiedProgram t) instance Monad (ReifiedProgram t) instance Applicative (ReifiedProgram t) instance Functor (ReifiedProgram t) instance Operational t (Program t) instance Monad (Program t) instance Applicative (Program t) instance Functor (Program t)