-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | A transformer for generic requests -- @package request-monad @version 0.3.0.0 -- | -- -- The Request monad module Control.Monad.Request.Class -- | This type class generalizes monadic requests. -- -- Parameters: -- -- class Monad m => MonadRequest r r' m | m -> r r' send :: MonadRequest r r' m => r -> m r' instance (Monoid w, MonadRequest r r' m) => MonadRequest r r' (WriterT w m) instance (Monoid w, MonadRequest r r' m) => MonadRequest r r' (WriterT w m) instance MonadRequest r r' m => MonadRequest r r' (StateT x m) instance MonadRequest r r' m => MonadRequest r r' (StateT x m) instance MonadRequest r r' m => MonadRequest r r' (ReaderT x m) instance (Monoid w, MonadRequest r r' m) => MonadRequest r r' (RWST x w s m) instance (Monoid w, MonadRequest r r' m) => MonadRequest r r' (RWST x w s m) instance MonadRequest r r' m => MonadRequest r r' (MaybeT m) instance MonadRequest r r' m => MonadRequest r r' (ListT m) instance MonadRequest r r' m => MonadRequest r r' (ExceptT e m) instance (Error e, MonadRequest r r' m) => MonadRequest r r' (ErrorT e m) instance MonadRequest r r' m => MonadRequest r r' (ContT x m) instance MonadRequest r r' m => MonadRequest r r' (IdentityT m) -- | -- -- The Request monad module Control.Monad.Request.Lazy -- | This type class generalizes monadic requests. -- -- Parameters: -- -- class Monad m => MonadRequest r r' m | m -> r r' send :: MonadRequest r r' m => r -> m r' -- | A Request monad, parameterized by the request type, r, and -- response type, r'. together. type Request r r' = RequestT r r' Identity -- | Turn a request and response callback into a monadic computation. request :: r -> (r' -> a) -> Request r r' a -- | Evaluate a Request r r' a action. runRequest :: Request r r' a -> (r -> r') -> a -- | Given a x -> r, transform a computation that sends -- requests of type x into one that sends requests of type -- r. mapRequest :: (x -> r) -> Request x r' a -> Request r r' a -- | Given a mapping from r' -> x, transform a computation -- handles responses of type x to one that handles responses of -- type r'. mapResponse :: (r' -> x) -> Request r x a -> Request r r' a -- | A request monad, parameterized by the request type, r, -- response type, r', and inner monad, m. type RequestT r r' = FreeT (RequestF r r') -- | This function takes a request and monadic response handler to produce -- a RequestT r r' m a. requestT :: Monad m => r -> (r' -> RequestT r r' m a) -> RequestT r r' m a -- | Given a RequestT r r' m a and a mapping from requests -- to responses, return a monadic computation which produces a. runRequestT :: Monad m => RequestT r r' m a -> (r -> m r') -> m a -- | Turn a computation that requests x into a computation that -- requests r. mapRequestT :: Monad m => (x -> RequestT r r' m r) -> RequestT x r' m a -> RequestT r r' m a -- | Turn a computation that handles x into a computation that -- handles r'. mapResponseT :: Monad m => (r' -> RequestT r r' m x) -> RequestT r x m a -> RequestT r r' m a instance Functor (RequestF r r') instance Monad m => MonadRequest r r' (RequestT r r' m) -- | -- -- The Request monad module Control.Monad.Request