Programmieren mit Locks

...ist fehleranfällig:

Beispiel (Vorsicht, fehlerhafter Code):

überweise ( betrag :: Geld ) 
  ( quelle :: MVar Geld ) ( ziel :: MVar Geld ) = do
    q <- takeMVar quelle
    when ( q >= betrag ) $ do 
        z <- takeMVar ziel
        putMVar quelle $ q - betrag
        putMVar ziel   $ z + betrag



Johannes Waldmann 2010-01-25