> The latter. atomicModifyIORef is harder though still, since it is a
> primop with the same properties as modifyIORef :/
>
>> So would it make sense to create a strict modifyIORef' function?
>
>
> Very much so. In fact, I'd argue the vast majority of uses are for the
> WHNF-strict version.

I just fixed a leak with atomicModifyIORef that was exactly this
problem.  If it had at least been documented I wouldn't have had to do
that.  So I'm going to submit a library proposal to either 1)
strictify atomicModifyIORef, 2) add atomicModifyIORef', or at the
least 3) add documentation that says "this function leaks".  Same
story for modifyIORef of course.

The only workaround I could find is to immediately read the value back
out and 'seq' on it, but it's ugly.

So two questions:

writeIORef doesn't have this problem.  If I am just writing a simple
value, is writeIORef atomic?  In other words, can I replace
'atomicModifyIORef r (const (x, ())' with 'writeIORef r x'?

Any reason to not do solution 1 above?
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to