[CSC] Software Transactional Memory and Using STM in Haskell