boots-app-0.1: src/Boots/App.hs
module Boots.App(
natA
, delayA
, bracketA
, module Boots.App.Internal
) where
import Boots.App.Internal
import Boots.Factory
natA :: Monad m => Factory (AppT env m) env component -> Factory m env component
natA fenc = do
env <- ask
natTrans (runAppT env) lift fenc
delayA :: MonadCatch m => AppT env m () -> Factory m env ()
delayA app = do
env <- ask
delay $ runAppT env app
bracketA :: MonadCatch m => AppT env m res -> (res -> AppT env m ()) -> Factory m env res
bracketA open close = do
env <- ask
bracket (runAppT env open) (runAppT env . close)