18 lines
425 B
Haskell
18 lines
425 B
Haskell
{-# LANGUAGE DerivingVia #-}
|
|
module Control.Monad.App where
|
|
|
|
import Data.Environment (Environment)
|
|
import Control.Monad.Reader ( MonadIO, MonadReader, ReaderT(..) )
|
|
|
|
newtype App a = App ( ReaderT Environment IO a )
|
|
deriving
|
|
( Functor
|
|
, Applicative
|
|
, Monad
|
|
, MonadReader Environment
|
|
, MonadIO
|
|
) via ReaderT Environment IO
|
|
|
|
runApp :: Environment -> App a -> IO a
|
|
runApp env (App f) = runReaderT f env
|