-- 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)