diff options
author | Sean Whitton <spwhitton@spwhitton.name> | 2015-03-20 14:08:49 +0000 |
---|---|---|
committer | Sean Whitton <spwhitton@spwhitton.name> | 2015-03-20 14:08:49 +0000 |
commit | 0e58da3a90e7804fc52fae345717cb914f80f279 (patch) | |
tree | 976073f79b27ac877c95ee6cbd273cbd309212f4 | |
parent | 0794f62270cf071d3571460d2c1c70eec220c9a4 (diff) | |
download | sariulclocks-0e58da3a90e7804fc52fae345717cb914f80f279.tar.gz |
modifyScores added to monad
-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 } |