Uno dei principali vantaggi della memoria transazionale del software che viene sempre menzionato è la componibilità e la modularità. Frammenti diversi possono essere combinati per produrre componenti più grandi. Nei programmi basati su lock, spesso non è così.
Sto cercando un semplice esempio che illustra questo con il codice attuale. Preferirei un esempio in Clojure, ma anche Haskell sta bene. Punti bonus se l'esempio mostra anche un codice basato su lucchetto che non può essere composto facilmente.