gore-and-ash-async 1.0.1.0 → 1.1.0.0
raw patch · 2 files changed
+14/−3 lines, 2 filesdep +resourcetdep +transformers-base
Dependencies added: resourcet, transformers-base
Files
gore-and-ash-async.cabal view
@@ -1,5 +1,5 @@ name: gore-and-ash-async-version: 1.0.1.0+version: 1.1.0.0 synopsis: Core module for Gore&Ash engine that embeds async IO actions into game loop. description: Please see README.md homepage: https://github.com/TeaspotStudio/gore-and-ash-async#readme@@ -29,9 +29,11 @@ , gore-and-ash >= 1.1.0.1 , hashable >= 1.2.4.0 , mtl >= 2.2.1+ , resourcet >= 1.1.7.1 , transformers >= 0.4.2.0+ , transformers-base >= 0.4.4 , unordered-containers >= 0.2.5.1-+ default-extensions: BangPatterns DeriveGeneric
src/Game/GoreAndAsh/Async/Module.hs view
@@ -13,9 +13,12 @@ ) where import Control.Concurrent.Async+import Control.Monad.Base import Control.Monad.Catch+import Control.Monad.Error.Class import Control.Monad.Fix import Control.Monad.State.Strict+import Control.Monad.Trans.Resource import Data.Proxy import Game.GoreAndAsh@@ -44,8 +47,14 @@ -- -- The module is NOT pure within first phase (see 'ModuleStack' docs), therefore currently only 'IO' end monad can handler the module. newtype AsyncT s m a = AsyncT { runAsyncT :: StateT (AsyncState s) m a }- deriving (Functor, Applicative, Monad, MonadState (AsyncState s), MonadFix, MonadTrans, MonadIO, MonadThrow, MonadCatch, MonadMask)+ deriving (Functor, Applicative, Monad, MonadState (AsyncState s), MonadFix, MonadTrans, MonadIO, MonadThrow, MonadCatch, MonadMask, MonadError e) +instance MonadBase IO m => MonadBase IO (AsyncT s m) where+ liftBase = AsyncT . liftBase++instance MonadResource m => MonadResource (AsyncT s m) where + liftResourceT = AsyncT . liftResourceT+ instance GameModule m s => GameModule (AsyncT s m) (AsyncState s) where type ModuleState (AsyncT s m) = AsyncState s runModule (AsyncT m) s1 = do