⇒ darf keine IO-Aktionen enthalten (da man deren Nebenwirkungen sofort beobachten kann)
⇒ neuer Typ STM a
für Aktionen mit Nebenwirkungen
nur auf Transaktionsvariablen TVar a
type Account = TVar Int withdraw :: Account -> Int -> STM () withdraw account m = do balance <- readTVar account writeTVar account ( balance - m ) transfer :: Account -> Account -> Int -> IO () transfer from to m = atomically ( do withdraw from m ; deposit to m )