From 0e58da3a90e7804fc52fae345717cb914f80f279 Mon Sep 17 00:00:00 2001 From: Sean Whitton Date: Fri, 20 Mar 2015 14:08:49 +0000 Subject: modifyScores added to monad --- src/Control/Monad/SariulClocks.hs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) 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 } -- cgit v1.2.3