...ist fehleranfällig:
überweise ( betrag :: Geld )
( quelle :: MVar Geld )
( ziel :: MVar Geld ) = do
q <- readMVar quelle
when ( q >= betrag ) $ do
modifyMVar_ quelle $ \ q ->
return $ q - betrag
modifyMVar_ ziel $ \ z ->
return $ z + betrag