aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorSean Whitton <spwhitton@spwhitton.name>2015-03-20 14:08:49 +0000
committerSean Whitton <spwhitton@spwhitton.name>2015-03-20 14:08:49 +0000
commit0e58da3a90e7804fc52fae345717cb914f80f279 (patch)
tree976073f79b27ac877c95ee6cbd273cbd309212f4
parent0794f62270cf071d3571460d2c1c70eec220c9a4 (diff)
downloadsariulclocks-0e58da3a90e7804fc52fae345717cb914f80f279.tar.gz
modifyScores added to monad
-rw-r--r--src/Control/Monad/SariulClocks.hs11
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 }