Software Transactional Memory, or STM, is an abstraction for
concurrent communication. The main benefits of STM are
/composability/ and /modularity/. That is, using STM you can write
concurrent abstractions that can be easily composed with any other
abstraction built using STM, without exposing the details of how
your abstraction ensures safety. This is typically not the case
with other forms of concurrent communication, such as locks or
'MVar's.