mirror of https://github.com/voidlizard/hbs2
32 lines
669 B
Haskell
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
|
|
|
|
|
|
|