<div dir="ltr">I&#39;d rather say that STM is intended to be used just for building up transactions, not to model your whole process/thread, simply because in the latter case your process couldn&#39;t have any observable intermediate state, or put in another way, between any two transactions the information can only go in one direction.<br>
So, since synchronizing two processes needs bidirectional communication, you have to use more than one transaction.<br>In the end you still write processes in IO, but communicate via transactions built in STM.<br><br>It&#39;s a good thing to expose your primitives as STM when you can, so that users can build larger transactions on top of them, but a synchronous send is not a transaction from the start so there&#39;s no choice.<br>
<br><br><div class="gmail_quote">2008/10/9 roger peppe <span dir="ltr">&lt;<a href="mailto:rogpeppe@gmail.com">rogpeppe@gmail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="Ih2E3d">On Thu, Oct 9, 2008 at 9:15 AM, Ryan Ingram &lt;<a href="mailto:ryani.spam@gmail.com">ryani.spam@gmail.com</a>&gt; wrote:<br>
&gt; I don&#39;t think what you want is possible if both sides are in STM.<br>
&gt; Other authors have posted solutions where one side or the other of the<br>
&gt; transaction is in I/O, but wholly inside STM it&#39;s not possible.<br>
<br>
</div>Thanks, that&#39;s what I thought, although I wasn&#39;t sure of it, being<br>
new to both Haskell and STM.<br>
<br>
Presumably this result means that it&#39;s not possible to implement<br>
any bounded-buffer-type interface within (rather than on top of) STM.<br>
<br>
Isn&#39;t that a rather serious restriction?<br>
<div><div></div><div class="Wj3C7c"><br>
 &nbsp;cheers,<br>
 &nbsp; &nbsp;rog.<br>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
</div></div></blockquote></div><br></div>