STM-Beispiel

überweise ( betrag :: Geld ) 
  ( quelle :: TVar Geld ) ( ziel :: TVar Geld ) = 
  atomically $ do
    q <- readTVar quelle
    if ( q >= betrag ) then do 
        writeTVar quelle $ q - betrag
        z <- readTVar ziel
        writeTVar ziel $ z + betrag 
    else retry
benutzt Funktionen:
readTVar   :: TVar a -> STM a
writeTVar  :: TVar a -> a -> STM a
atomically :: STM a -> IO a



Johannes Waldmann 2010-01-25