Copyright | (c) 2015 Athan Clark |
---|---|
License | BSD-style |
Maintainer | athan.clark@gmail.com |
Stability | experimental |
Portability | GHC |
Safe Haskell | None |
Language | Haskell2010 |
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 :: MonadIO m => (forall a. m a -> IO a) -> Application -> ApplicationT m
- liftMiddleware :: MonadIO m => (forall a. m a -> IO a) -> Middleware -> MiddlewareT m
- runApplicationT :: MonadIO m => (forall a. m a -> IO a) -> ApplicationT m -> Application
- runMiddlewareT :: MonadIO m => (forall a. m a -> IO a) -> MiddlewareT m -> Middleware
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
liftApplication :: MonadIO m => (forall a. m a -> IO a) -> Application -> ApplicationT m Source
liftMiddleware :: MonadIO m => (forall a. m a -> IO a) -> Middleware -> MiddlewareT m Source
runApplicationT :: MonadIO m => (forall a. m a -> IO a) -> ApplicationT m -> Application Source
runMiddlewareT :: MonadIO m => (forall a. m a -> IO a) -> MiddlewareT m -> Middleware Source