
Stephan Friedrichs-2 wrote:
it's unsafe to perform IO inside of a transaction as it can't be undone, when rolling it back. I guess, unsafeIOToSTM has been designed in order to allow us to inject debugging output into a transaction, but you really shouldn't use it to perform "real" IO (like writing files, etc.).
Simon Peyton Jones provides a good example of this in http://research.microsoft.com/~simonpj/papers/stm/beautiful.pdf
atomically (do { x <- readTVar xv ; y <- readTVar yv ; if x>y then launchMissiles else return () })
where launchMissiles :: IO () causes serious international side-effects.
;-) -- Ricardo GuimarĂ£es Herrmann "There are only two industries that refer to their customers as 'users'" -- Edward Tufte -- View this message in context: http://www.nabble.com/question-about-STM-and-IO-tp15439579p15481669.html Sent from the Haskell - Haskell-Cafe mailing list archive at Nabble.com.