-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Environment Monad with automatic resource refreshment
--
-- Please see README.md
@package refresht
@version 0.1.0.0
module Control.Monad.Refresh
-- | Reader monad transformer with an automatic environment refreshment.
--
-- Since 0.1.0.0
data RefreshT s m a
-- | Excecute environmental computation and returns the result with the
-- final environment.
--
-- Since 0.1.0.0
runRefreshT :: MonadCatch m => RefreshSetting s m -> s -> RefreshT s m a -> m (a, s)
-- | Excecute environmental computation and returns the result, discarding
-- the final environment.
--
-- Since 0.1.0.0
evalRefreshT :: MonadCatch m => RefreshSetting s m -> s -> RefreshT s m a -> m a
-- | Settings for Refreshment
--
-- Since 0.1.0.0
data RefreshSetting s m
defaultRefreshSetting :: Monad m => RefreshSetting s m
refresher :: forall s_acOI m_acOJ. Lens' (RefreshSetting s_acOI m_acOJ) (s_acOI -> m_acOJ s_acOI)
refreshDelay :: forall s_acOI m_acOJ. Lens' (RefreshSetting s_acOI m_acOJ) Int
shouldRefresh :: forall s_acOI m_acOJ. Lens' (RefreshSetting s_acOI m_acOJ) (s_acOI -> m_acOJ Bool)
isRefreshingError :: forall s_acOI m_acOJ. Lens' (RefreshSetting s_acOI m_acOJ) (SomeException -> Bool)
-- | Try an atomic transaction and, if exceptions specified by
-- isRefreshingError has been raised, refreshes the
-- environment and redo the entire transaction.
--
-- Since 0.1.0.0
atomic :: (MonadIO m, MonadCatch m) => RefreshT s m a -> RefreshT s m a
-- | atomicLift = atomic . lift.
--
-- Since 0.1.0.0
atomicLift :: (MonadIO m, MonadCatch m) => m a -> RefreshT s m a
-- | atomicLiftIO = atomic . liftIO.
--
-- Since 0.1.0.0
atomicLiftIO :: (MonadIO m, MonadCatch m) => IO a -> RefreshT s m a
-- | atomicLift composed with ask.
--
-- Since 0.1.0.0
withEnv :: (MonadIO m, MonadCatch m) => (s -> m a) -> RefreshT s m a
-- | Forces environmental refreshment, regardless of
-- shouldRefresh condition.
--
-- Since 0.1.0.0
refresh :: MonadIO m => RefreshT s m ()
instance GHC.Base.Monad m => GHC.Base.Monad (Control.Monad.Refresh.RefreshT s m)
instance GHC.Base.Monad m => GHC.Base.Applicative (Control.Monad.Refresh.RefreshT s m)
instance GHC.Base.Functor m => GHC.Base.Functor (Control.Monad.Refresh.RefreshT s m)
instance Control.Monad.Trans.Class.MonadTrans (Control.Monad.Refresh.RefreshT s)
instance Control.Monad.IO.Class.MonadIO m => Control.Monad.IO.Class.MonadIO (Control.Monad.Refresh.RefreshT s m)
instance Control.Monad.IO.Class.MonadIO m => Control.Monad.Reader.Class.MonadReader s (Control.Monad.Refresh.RefreshT s m)
instance GHC.Base.Monad m => Data.Default.Class.Default (Control.Monad.Refresh.RefreshSetting s m)