Ameisen (Haskell) (Aufgaben)

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 )



Johannes Waldmann 2011-06-29