Simon Peyton-Jones on Software Transactional Memory (OSCON 2007 video)
blip.tv
blip.tv
http://article.gmane.org/gmane.lisp.lispworks.general/9700/m...
Anyway, you will have to refrain from (almost) any side-effects while inside an STM transaction. That comes naturally to Haskell --- but in OCaml they tend to be used them more often as far as I know. This requires some discipline.