@@ -7,9 +7,9 @@ import Streamly
7import Streamly.Prelude as S
7import Streamly.Prelude as S
8import Control.Monad (when)
8import Control.Monad (when)
9import Control.Monad.IO.Class (MonadIO(liftIO))
9import Control.Monad.IO.Class (MonadIO(liftIO))
10−import Control.Monad.State (MonadState, get, modify, runStateT)
10+import Control.Monad.State (MonadState, get, modify, runStateT, put)
12−data Event = Harm Int | Heal Int | Quit deriving (Show)
12+data Event = Harm Int | Heal Int deriving (Show)
14userAction :: MonadAsync m => SerialT m Event
14userAction :: MonadAsync m => SerialT m Event
15userAction = S.repeatM $ liftIO askUser
15userAction = S.repeatM $ liftIO askUser
@@ -18,7 +18,7 @@ userAction = S.repeatM $ liftIO askUser
18 command <- getLine
18 command <- getLine
19 case command of
19 case command of
20 "potion" -> return (Heal 10)
20 "potion" -> return (Heal 10)
21− "quit" -> return Quit
21+ "quit" -> fail "quit"
22 _ -> putStrLn "What?" >> askUser
22 _ -> putStrLn "What?" >> askUser
24acidRain :: MonadAsync m => SerialT m Event
24acidRain :: MonadAsync m => SerialT m Event
@@ -30,7 +30,6 @@ game = do
30 case event of
30 case event of
31 Harm n -> modify $ \h -> h - n
31 Harm n -> modify $ \h -> h - n
32 Heal n -> modify $ \h -> h + n
32 Heal n -> modify $ \h -> h + n
36 when (h <= 0) $ fail "You die!"
35 when (h <= 0) $ fail "You die!"