Copyright | (c) 2015 2016 2017 2018 Athan Clark |
---|---|
License | BSD-style |
Maintainer | athan.clark@gmail.com |
Stability | experimental |
Portability | GHC |
Safe Haskell | None |
Language | Haskell2010 |
Network.Wai.Trans
Description
Simple utilities for embedding a monad transformer stack in an Application
or Middleware
- with MiddlewareT
, your transformer stack is shared
across all attached middlewares until run. You can also lift existing Middleware
to MiddlewareT
, given some extraction function.
- type ApplicationT m = Request -> (Response -> m ResponseReceived) -> m ResponseReceived
- type MiddlewareT m = ApplicationT m -> ApplicationT m
- liftApplication :: MonadBaseControl IO m stM => Extractable stM => Application -> ApplicationT m
- liftMiddleware :: MonadBaseControl IO m stM => Extractable stM => Middleware -> MiddlewareT m
- runApplicationT :: MonadBaseControl IO m stM => Extractable stM => ApplicationT m -> m Application
- runMiddlewareT :: MonadBaseControl IO m stM => Extractable stM => MiddlewareT m -> m Middleware
- hoistApplicationT :: Monad m => Monad n => (forall a. m a -> n a) -> (forall a. n a -> m a) -> ApplicationT m -> ApplicationT n
- hoistMiddlewareT :: Monad m => Monad n => (forall a. m a -> n a) -> (forall a. n a -> m a) -> MiddlewareT m -> MiddlewareT n
- catchApplicationT :: MonadCatch m => Exception e => ApplicationT m -> (e -> ApplicationT m) -> ApplicationT m
- catchMiddlewareT :: MonadCatch m => Exception e => MiddlewareT m -> (e -> MiddlewareT m) -> MiddlewareT m
Documentation
type ApplicationT m = Request -> (Response -> m ResponseReceived) -> m ResponseReceived Source #
Isomorphic to Kleisli (ContT ResponseReceived m) Request Response
type MiddlewareT m = ApplicationT m -> ApplicationT m Source #
Lift and Run
Arguments
:: MonadBaseControl IO m stM | |
=> Extractable stM | |
=> Application | To lift |
-> ApplicationT m |
Arguments
:: MonadBaseControl IO m stM | |
=> Extractable stM | |
=> Middleware | To lift |
-> MiddlewareT m |
Arguments
:: MonadBaseControl IO m stM | |
=> Extractable stM | |
=> ApplicationT m | To run |
-> m Application |
Arguments
:: MonadBaseControl IO m stM | |
=> Extractable stM | |
=> MiddlewareT m | To run |
-> m Middleware |
Monad Morphisms
Arguments
:: Monad m | |
=> Monad n | |
=> (forall a. m a -> n a) | To |
-> (forall a. n a -> m a) | From |
-> ApplicationT m | |
-> ApplicationT n |
Arguments
:: Monad m | |
=> Monad n | |
=> (forall a. m a -> n a) | To |
-> (forall a. n a -> m a) | From |
-> MiddlewareT m | |
-> MiddlewareT n |
Exception Catching
Arguments
:: MonadCatch m | |
=> Exception e | |
=> ApplicationT m | |
-> (e -> ApplicationT m) | Handler |
-> ApplicationT m |
Arguments
:: MonadCatch m | |
=> Exception e | |
=> MiddlewareT m | |
-> (e -> MiddlewareT m) | Handler |
-> MiddlewareT m |