boots-0.0.2: src/Boots/Internal.hs
-- |
-- Module: Boots.Internal
-- Copyright: 2019 Daniel YU
-- License: BSD3
-- Maintainer: leptonyu@gmail.com
-- Stability: experimental
-- Portability: portable
--
-- Boot cores.
--
module Boots.Internal(
-- * Plugin
boot
, module Boots.Internal.Plugin
-- * Application
, bootApp
, module Boots.Internal.App
) where
import Boots.Internal.App
import Boots.Internal.Plugin
-- | Run application only in plugin.
boot :: Monad m => Plugin () m (m ()) -> m ()
boot plugin = runPlugin () plugin id
-- | Run application in context with the help of plugin. Context @cxt@ can't escape from @m@.
-- If you want to define your own `AppT` then please use 'boot' or 'runPlugin'.
bootApp :: Plugin () m cxt -> AppT cxt m () -> m ()
bootApp plugin app = runPlugin () plugin (`runAppT` app)