Ergänzen Sie die Funktionen (Transaktionen):
count :: Ant -> STM () count ant = do m <- readTVar ( moves ant ) writeTVar ( moves ant ) $! (m + 1 ) -- | Zelle betreten, falls sie frei ist enter :: Cell -> STM () enter c = do ... <- readTVar ... check ... writeTVar ... -- | Zelle verlassen leave :: Cell -> STM () -- | ein Schritt in aktuelle Richtung forward :: World -> Ant -> STM () forward w ant = do ... let pos' = shift ( size w ) pos dir ... -- | Richtung verändern rotate :: Int -> Ant -> STM () rotate turn ant = do ... ... ( dir + turn )