FeedMonad/FeedMonad/src/Control/Monad/App.hs

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