Esaminando la definizione del modello dell'Unità di lavoro sembra molto simile a quello che otterrebbe un programmatore se implementasse un Monade come un IO o una Moneta di Transazione. Ciò che rende il concetto di unità di lavoro fondamentalmente diverso dall'uso di una Monade? Supponiamo che stiamo lavorando in un linguaggio che ha abbastanza potere per implementare la maggior parte delle Monade comuni e può implementare un modello di unità di lavoro simile a quello che puoi trovare in Java o C #, specialmente uno con un sistema di tipi come Scala o Haskell.
Se uno può essere scelto dall'altro quali sono i pro e i contro di ciascun approccio?