Haskell-like STM for Swift