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