<div dir="auto">Yes, you're absolutely right about the name. My proposal is thus amended.</div><br><div class="gmail_quote"><div dir="ltr">On Sun, Jun 24, 2018, 7:38 PM Dr.Koster <<a href="mailto:drkoster@qq.com">drkoster@qq.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="min-height:22px;margin-bottom:8px">+1, BTW. let's call it atomicSwapIORef to keep sync with MVar/TVar's counterpart.</div><div style="min-height:22px;margin-bottom:8px"><br></div><span class="m_3319854190158135915mail-footer">发自我的iPhone</span><div id="m_3319854190158135915original-content"><br><br><div><div style="font-size:70%;padding:2px 0">------------------ Original ------------------</div><div style="font-size:70%;background:#f0f0f0;color:#212121;padding:8px;border-radius:4px"><div><b>From:</b> David Feuer <<a href="mailto:david.feuer@gmail.com" target="_blank" rel="noreferrer">david.feuer@gmail.com</a>></div><div><b>Date:</b> Sat,Jun 23,2018 4:15 PM</div><div><b>To:</b> Haskell Libraries <<a href="mailto:libraries@haskell.org" target="_blank" rel="noreferrer">libraries@haskell.org</a>></div><div><b>Subject:</b> Re: Proposal: Add an atomic IORef replacement operation</div></div></div><br><div dir="auto">Currently, atomicWriteIORef is implemented using atomicModifyIORef. This is not ideal: the latter allocates memory while the former shouldn't need to. In the process of writing alternative implementations, I realized that we can efficiently support an atomic operation that replaces the value in an IORef, returning the previous value. I propose that we add, to Data.IORef, a function to do so:<div dir="auto"><br></div><div dir="auto">atomicReplaceIORef :: IORef a -> a -> IO a</div></div>

</div></blockquote></div>