-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | A transformer for generic requests
--
@package request-monad
@version 0.2.0.0
-- |
-- - Computation type: Compuations that send requests and handle
-- responses
-- - Binding strategy: Response callbacks are composed with the
-- binding function
-- - Useful for: Implementation-agnostic requests (i.e. making
-- real requests versus mocking), adding middlewares.
-- - Example type: Request String String a
--
--
-- The Request monad
module Control.Monad.Request.Class
-- | This type class generalizes monadic requests.
--
-- Parameters:
--
--
-- - r - The type of request
-- - r' - The type of response
-- - m - The monad through which the requests are sent
--
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)
-- |
-- - Computation type: Compuations that send requests and handle
-- responses
-- - Binding strategy: Response callbacks are composed with the
-- binding function
-- - Useful for: Implementation-agnostic requests (i.e. making
-- real requests versus mocking), adding middlewares.
-- - Example type: Request String String a
--
--
-- The Request monad
module Control.Monad.Request.Lazy
-- | This type class generalizes monadic requests.
--
-- Parameters:
--
--
-- - r - The type of request
-- - r' - The type of response
-- - m - The monad through which the requests are sent
--
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.
data RequestT r r' m a
-- | This function takes a request and monadic response handler to produce
-- a RequestT r r' m a.
requestT :: Monad m => 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 (Monoid w, MonadWriter w m) => MonadWriter w (RequestT r r' m)
instance MonadState s m => MonadState s (RequestT r r' m)
instance (Monoid w, MonadReader r m, MonadWriter w m, MonadState s m) => MonadRWS r w s (RequestT r r' m)
instance MonadReader x m => MonadReader x (RequestT r r' m)
instance MonadError e m => MonadError e (RequestT r r' m)
instance MonadTrans (RequestT r r')
instance MonadIO m => MonadIO (RequestT r r' m)
instance Monad m => MonadRequest r r' (RequestT r r' m)
instance MonadPlus m => MonadPlus (RequestT r r' m)
instance Monad m => Monad (RequestT r r' m)
instance Functor m => Functor (RequestT r r' m)
instance Applicative m => Applicative (RequestT r r' m)
instance Alternative m => Alternative (RequestT r r' m)
-- |
-- - Computation type: Compuations that send requests and handle
-- responses
-- - Binding strategy: Response callbacks are composed with the
-- binding function
-- - Useful for: Implementation-agnostic requests (i.e. making
-- real requests versus mocking), adding middlewares.
-- - Example type: Request String String a
--
--
-- The Request monad
module Control.Monad.Request