[Haskell] STM applications and examples?