Thanks.&nbsp; I don&#39;t know for what uses of IVars the difference in expressiveness is helpful, but now I get that the difference is there.&nbsp; Cheers,&nbsp; - Conal<br><br><div class="gmail_quote">On Dec 9, 2007 2:08 PM, Benja Fallenstein &lt;
<a href="mailto:benja.fallenstein@gmail.com">benja.fallenstein@gmail.com</a>&gt; wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Hi Conal,
<br><div class="Ih2E3d"><br>On Dec 9, 2007 6:09 PM, Conal Elliott &lt;<a href="mailto:conal@conal.net">conal@conal.net</a>&gt; wrote:<br>&gt; &gt; readIVar&#39; :: IVar a -&gt; a<br>&gt; &gt; readIVar&#39; = unsafePerformIO . readIVar
<br>&gt;<br>&gt; &gt; so, we do not need readIVar&#39;. it could be a nice addition to the<br>&gt; libraries, maybe as &quot;unsafeReadIVar&quot; or &quot;unsafeReadMVar&quot;.<br>&gt;<br>&gt; The same argument applies any to pure function, doesn&#39;t it? &nbsp;For instance, a
<br>&gt; non-IO version of succ is unnecessary. &nbsp;My question is why make readIVar a<br>&gt; blocking IO action rather than a blocking pure value, considering that it<br>&gt; always returns the same value?<br><br></div>From the rest of Marc&#39;s post, I understood the point to be that
<br>readIVar lets you do something that readIVar&#39; does not let you do:<br>block until the IVar is written, then continue *without* first<br>evaluating the thunk in the IVar to WHNF. I haven&#39;t used IVars myself,<br>
so this isn&#39;t informed by hands-on experience, but it does sound<br>sensible to me that &quot;block until the IVar has been written&quot; and<br>&quot;evaluate the thunk to WHNF&quot; should be separable.<br><br>All the best,
<br><font color="#888888">- Benja<br></font></blockquote></div><br>