| Copyright | 2019 Daniel YU |
|---|---|
| License | BSD3 |
| Maintainer | leptonyu@gmail.com |
| Stability | experimental |
| Portability | portable |
| Safe Haskell | None |
| Language | Haskell2010 |
Boots.Plugin
Description
Boot plugin.
Synopsis
- boot :: Monad m => Plugin () m (m ()) -> m ()
- data Plugin i m u
- runPlugin :: i -> Plugin i m u -> (u -> m ()) -> m ()
- promote :: i -> Plugin i m u -> Plugin x m u
- combine :: [Plugin i m i] -> Plugin i m i
- withPlugin :: (i -> j) -> Plugin j m u -> Plugin i m u
- mapPlugin :: (m () -> m ()) -> Plugin i m u -> Plugin i m u
- isoPlugin :: (m () -> n ()) -> (n () -> m ()) -> Plugin i n u -> Plugin i m u
- bracketP :: forall m i u. MonadCatch m => m u -> (u -> m ()) -> Plugin i m u
- wrapP :: ((u -> m ()) -> m ()) -> Plugin i m u
Documentation
Plugin generates component u with the context of component i running in monad m.
Instances
| MonadReader i (Plugin i m) Source # | |
| MonadTrans (Plugin i) Source # | |
Defined in Boots.Internal.Plugin | |
| Monad (Plugin i m) Source # | |
| Functor (Plugin i m) Source # | |
| Applicative (Plugin i m) Source # | |
Defined in Boots.Internal.Plugin | |
| MonadIO m => MonadIO (Plugin i m) Source # | |
Defined in Boots.Internal.Plugin | |
| MonadThrow m => MonadThrow (Plugin i m) Source # | |
Defined in Boots.Internal.Plugin | |
| (MonadIO m, HasLogger cxt) => MonadLogger (Plugin cxt m) Source # | |
Defined in Boots.Plugin.Logger | |
| (MonadIO m, HasLogger cxt) => MonadLoggerIO (Plugin cxt m) Source # | |
Defined in Boots.Plugin.Logger | |
| Monad m => MonadCont (Plugin i m) Source # | |
| HasSalak cxt => MonadSalak (Plugin cxt m) Source # | |
Defined in Boots.Plugin.Salak | |
withPlugin :: (i -> j) -> Plugin j m u -> Plugin i m u Source #
Convert a plugin into another.
mapPlugin :: (m () -> m ()) -> Plugin i m u -> Plugin i m u Source #
Apply a function to transform the result of a continuation-passing computation.
isoPlugin :: (m () -> n ()) -> (n () -> m ()) -> Plugin i n u -> Plugin i m u Source #
Transform a plugin with monad n to a plugin with monad m.
Arguments
| :: MonadCatch m | |
| => m u | Open resource. |
| -> (u -> m ()) | Close resource. |
| -> Plugin i m u | Resource plugin. |
Create bracket style plugin, used for manage resources, which need to open and close.
A simple example:
>>>res = bracketP (putStrLn "open") (const $ putStrLn "close")>>>runPlugin () res (const $ putStrLn "using")open using close