We kunnen berekeningen die staat bijhouden voorstellen in Haskell als functies van een staat naar een paar van een resultaat en een nieuwe staat.
data State s a = State (s -> (a, s))
We kunnen dit opnieuw een instantie maken van een monad zoals hieronder weergegeven.
instance Monad (State s) where
return a = State $ \s -> (a,s)
m >>= k = State $ \s -> let (x,s') = run m s
in run (k x) s'
Werk de implementatie van de state monad af en implementeer de gevraagde functies.