-- 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)