hbs2/hbs2-git/hbs2-git-oracle/lib/HBS2/Git/Oracle/App.hs

32 lines
669 B
Haskell

module HBS2.Git.Oracle.App where
import HBS2.Git.Oracle.Prelude
import Control.Monad.Reader
data OracleEnv =
OracleEnv
{
}
deriving stock (Generic)
newtype Oracle m a =
Oracle { fromOracle :: ReaderT OracleEnv m a }
deriving newtype ( Applicative
, Functor
, Monad
, MonadTrans
, MonadReader OracleEnv
, MonadIO
, MonadUnliftIO
)
newOracleEnv :: MonadIO m => m OracleEnv
newOracleEnv = pure OracleEnv
withOracleEnv :: MonadIO m => OracleEnv -> Oracle m a -> m a
withOracleEnv env m = runReaderT (fromOracle m) env