Hi all,

>From http://clojure.org/refs : "I/O and other activities with
side-effects should be avoided in transactions, since transactions
will be retried. The io! macro can be used to prevent the use of an
impure function in a transaction."

Isn't it OK to do I/O in a transaction as long as doing the operation
multiple times has the same effect as doing it once (i.e. it's
idempotent)?

Isn't it also OK to read data in a transaction, in many circumstances?
Even if retrying the reads results in a different end state, that's OK
for lots of systems. Example: couldn't I safely read a stock price
from a ticker stream within a transaction, if the purpose was only to
have a cached value from sometime in the last 5 minutes?

(I imagine there are performance considerations. Retrying some I/O
operations could be expensive. Right now, I'm concerned with the
logic, not the performance, but if you know something about the
performance implications, please jump in).

Just hoping someone can straighten me out if I'm wrong... I'd like to
remove some io! macros from my code!

Thanks,
Hugh

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To post to this group, send email to clojure@googlegroups.com
To unsubscribe from this group, send email to 
clojure+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to