-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | fast and simple operational monad -- @package minioperational @version 0.4.8 module Control.Monad.Operational.TH makeSingletons :: Name -> Q [Dec] -- | Just for compatibility module Control.Monad.Operational.Class type (:!) t m = Elevate t m singleton :: Elevate f g => f a -> g a -- | 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 :: (Monad m, Elevate 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 Tower (ReifiedProgram t) instance Monad (ReifiedProgram t) instance Applicative (ReifiedProgram t) instance Functor (ReifiedProgram t) instance Tower (Program t) instance Monad (Program t) instance Applicative (Program t) instance Functor (Program t) -- | Simple operational monad transformer module Control.Monad.Trans.Operational.Mini newtype ProgramT t m a ProgramT :: (forall r. (a -> r) -> (m r -> r) -> (forall x. t x -> (x -> r) -> r) -> r) -> ProgramT t m a unProgramT :: ProgramT t m a -> forall r. (a -> r) -> (m r -> r) -> (forall x. t x -> (x -> r) -> r) -> r unProgram :: Monad m => ProgramT t m a -> (a -> m r) -> (forall x. t x -> (x -> m r) -> m r) -> m r cloneProgramT :: (Monad n, Elevate t n, Elevate m n) => ProgramT t m a -> n a -- | 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 transReifiedT :: Monad m => (forall x. m x -> n x) -> ReifiedProgramT t m a -> ReifiedProgramT t n a hoistReifiedT :: Monad m => (forall x. t x -> s x) -> ReifiedProgramT t m a -> ReifiedProgramT s m a instance MonadTrans (ReifiedProgramT t) instance (Monad m, Tower m) => Tower (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 (Monad m, Tower m) => Tower (ProgramT t m) instance Monad (ProgramT t m) instance Applicative (ProgramT t m) instance Functor (ProgramT t m)