...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