diff options
Diffstat (limited to 'src/Control/Monad/SariulClocks.hs')
-rw-r--r-- | src/Control/Monad/SariulClocks.hs | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/Control/Monad/SariulClocks.hs b/src/Control/Monad/SariulClocks.hs index 4d47161..fc5a7e5 100644 --- a/src/Control/Monad/SariulClocks.hs +++ b/src/Control/Monad/SariulClocks.hs @@ -3,10 +3,13 @@ module Control.Monad.SariulClocks ( SariulScoresMonad , SariulClocksCGI , SariulClocksIO + , runSariulClocksCGI + , runSariulClocksIO , putSession , getSession , putScores - , getScores) where + , getScores + , modifyScores) where import Control.Monad (liftM) import Control.Monad.Trans (MonadIO, lift) @@ -22,6 +25,12 @@ class ( Monad a , MonadIO a) => SariulScoresMonad a where putScores :: ScoresList -> a () getScores :: a ScoresList + modifyScores :: (ScoresList -> ScoresList) -> a () + modifyScores f = do + scores <- getScores + let scores' = f scores + putScores scores + return () newtype SariulClocksCGI a = SCC { getSCC :: StateT (Session, ScoresList) (CGIT IO) a } |