Drop hier links of afbeeldingen om ze aan de editor toe te voegen.

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.