Use of io!

109 views
Skip to first unread message

Josh Kamau

unread,
May 30, 2013, 1:47:26 AM5/30/13
to clo...@googlegroups.com
Hi ;

Whats the point of using io! inside dosync if all it does is make an exception to be thrown? Please someone make me understand. 

Regards.
Josh

Maik Schünemann

unread,
May 30, 2013, 1:56:20 AM5/30/13
to clo...@googlegroups.com
I think It stops other code to wrap around the code with the explicit io! call.
Its declarative way of saying: I am doing io! DONT USE me inside a dosync.


--
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clo...@googlegroups.com
Note that posts from new members are moderated - please be patient with your first post.
To unsubscribe from this group, send email to
clojure+u...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google Groups "Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email to clojure+u...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

dennis zhuang

unread,
May 30, 2013, 2:15:31 AM5/30/13
to Clojure
Yep,wrap code that has side effects, prevent it to be evaluated in STM transaction.


2013/5/30 Maik Schünemann <maiksch...@gmail.com>



--
庄晓丹
Email:        killm...@gmail.com xzh...@avos.com
Site:           http://fnil.net
Twitter:      @killme2008


Michael Klishin

unread,
May 30, 2013, 2:43:39 AM5/30/13
to clo...@googlegroups.com
2013/5/30 Josh Kamau <joshn...@gmail.com>

Whats the point of using io! inside dosync if all it does is make an exception to be thrown?

The point is to mark side-effecting code so that you can't accidentally use it in a transaction.
--
MK

http://github.com/michaelklishin
http://twitter.com/michaelklishin

Alex Baranosky

unread,
May 30, 2013, 4:10:02 AM5/30/13
to clo...@googlegroups.com
Do any of you ever use io! ?  I've never used it, but could see using it if I had a transaction-heavy application.

--

Josh Kamau

unread,
May 30, 2013, 5:04:02 AM5/30/13
to clo...@googlegroups.com
Thanks guys. Now i understand its for "marking" functions containing io so that they blow up if they are used inside transactions.  I am still learning clojure and i have decided to take some time to understand every function in the core API.

Josh.

Sean Corfield

unread,
May 30, 2013, 1:24:35 PM5/30/13
to clo...@googlegroups.com
On Thu, May 30, 2013 at 1:10 AM, Alex Baranosky
<alexander...@gmail.com> wrote:
> Do any of you ever use io! ? I've never used it, but could see using it if
> I had a transaction-heavy application.
>
> On Wed, May 29, 2013 at 11:43 PM, Michael Klishin
> <michael....@gmail.com> wrote:
>> The point is to mark side-effecting code so that you can't accidentally
>> use it in a transaction.

I gather the intent is for *all* side-effecting code to be wrapped in
io! so that you can't accidentally use it with STM transactions?

The only places in Clojure and its contribs that use this are:
* await - clojure.core
* await-for - clojure.core
* transaction - java.jdbc (deprecated)
* db-transaction - java.jdbc

It sounds like all inserts and updates in java.jdbc should also be
wrapped in io! and I would expect io! to be needed in a lot of other
places in Clojure libraries across the board...?
--
Sean A Corfield -- (904) 302-SEAN
An Architect's View -- http://corfield.org/
World Singles, LLC. -- http://worldsingles.com/

"Perfection is the enemy of the good."
-- Gustave Flaubert, French realist novelist (1821-1880)

Gary Trakhman

unread,
May 30, 2013, 1:27:45 PM5/30/13
to clo...@googlegroups.com
What if you really want the 'bad' effects on retries?  We need io! versions and non-io! versions of side-effect functions :-)


Gary Trakhman

unread,
May 30, 2013, 1:53:11 PM5/30/13
to clo...@googlegroups.com
Well, more seriously, I would be against any facility that prevents me from doing something potentially useful that I might want to do.  Sprinkling potential problem spots with io! might make more sense in an application than a library.
Reply all
Reply to author
Forward
0 new messages