------------------------------------------------------------------------------- -- Layer 2 (mockable IO), as per -- https://www.parsonsmatt.org/2018/03/22/three_layer_haskell_cake.html -- 2019 Francesco Ariis GPLv3 ------------------------------------------------------------------------------- {-# LANGUAGE GeneralizedNewtypeDeriving #-} module Terminal.Game.Layer.Object.GameIO where import qualified Control.Monad.Catch as MC import qualified Control.Monad.Trans as T newtype GameIO a = GameIO { runGIO :: IO a } deriving (Functor, Applicative, Monad, T.MonadIO, MC.MonadThrow, MC.MonadCatch, MC.MonadMask)