Wenn man nur den Inhalt einer Speicherstelle ändern will,
dann braucht man nicht IO
,
sondern es reicht State
.
import Control.Monad.State tick :: State Integer () tick = do c <- get ; put $ c + 1 evalState ( do tick ; tick ; get ) 0
Aufgabe: wie könnte die Implementierung aussehen?
data State s a = ?? instance Functor ( State s ) where instance Monad ( State s ) where