<div dir="ltr">To make the point more explicit.<div><br></div><div>Usually people use actors or agents because they want effect isolation, but in Haskell nothing is going to escape your notice on that front.</div><div><br>
</div><div>If you want to expand the scope of what in your codebase is *pure*, thereby relegating side-effects to only the functions that *have* to be side-effecting, then you might consider turning your problem into a Free Monad, where there's a pure DSL and pure functions that manipulate only the DSL with a separate effectful interpreter for execution. New people without a firm grasp of monadic DSLs can sometimes find the concept alien, so it's not something you should feel is obligatory. I would first seek to simply write code that solves your problem in Haskell, maybe with the use of Async, then refine afterward with a couple of tests written.</div>
<div><br></div><div>Relevant links:</div><div><br></div><div><a href="http://www.haskellforall.com/2012/06/you-could-have-invented-free-monads.html">http://www.haskellforall.com/2012/06/you-could-have-invented-free-monads.html</a></div>
<div><a href="https://www.fpcomplete.com/user/dolio/many-roads-to-free-monads">https://www.fpcomplete.com/user/dolio/many-roads-to-free-monads</a><br></div><div><a href="http://www.haskellforall.com/2012/07/purify-code-using-free-monads.html">http://www.haskellforall.com/2012/07/purify-code-using-free-monads.html</a><br>
</div><div><a href="http://www.haskellforall.com/2012/07/free-monad-transformers.html">http://www.haskellforall.com/2012/07/free-monad-transformers.html</a><br></div><div><br></div><div>Cheers,</div><div>Chris</div><div><br>
</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Mar 27, 2014 at 2:32 AM, Carter Schonwald <span dir="ltr"><<a href="mailto:carter.schonwald@gmail.com" target="_blank">carter.schonwald@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">I'm inclined to agree with Chris,<div>in the shared heap setting, you really should try those other approaches first! </div>
</div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Mar 27, 2014 at 2:32 AM, Christopher Allen <span dir="ltr"><<a href="mailto:cma@bitemyapp.com" target="_blank">cma@bitemyapp.com</a>></span> wrote:<br>


<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Have you looked at the Async library or Marlow's book?<div><br></div><div><a href="http://hackage.haskell.org/package/async" target="_blank">http://hackage.haskell.org/package/async</a><br>


</div><div><br></div><div><a href="http://chimera.labs.oreilly.com/books/1230000000929/" target="_blank">http://chimera.labs.oreilly.com/books/1230000000929/</a><br>
</div><div><br></div><div>Neither involve actors but I think many Haskellers, myself included, are skeptical of actor/agent systems. I've written a fair bit of Clojure and Scala code and don't much care for the model.</div>



<div><br></div><div>If all you really need is message passing/dispatch, you don't strictly speaking need actors. Channels, messages, and dataflow might very well be enough. Perhaps look into functional reactive programming as well?</div>



<div><br></div><div>Cheers, hope this helps.</div><div><br></div><div>--- Chris</div><div><br></div></div><div><div><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Mar 27, 2014 at 1:29 AM, james <span dir="ltr"><<a href="mailto:james@mansionfamily.plus.com" target="_blank">james@mansionfamily.plus.com</a>></span> wrote:<br>



<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Having been introduced to actors by looking at Erlang, I discovered Akka.<br>
<br>
It seems that the performance is pretty impressive and I like the model.<br>
<br>
There seem to be several basic Actor libraries in Hackage, but they don't seem<br>
to be very actively developed.<br>
<br>
I'm more interested in the model for programming within a single runtime<br>
than I am for distributed systems, but message and dispatch performance<br>
definitely is important.<br>
<br>
Can anyone share experiences with the different packages?  Is any one<br>
of them stand-out?<br>
<br>
Thanks<br>
James<br>
<br>
<br>
______________________________<u></u>_________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org" target="_blank">Haskell-Cafe@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/<u></u>mailman/listinfo/haskell-cafe</a><br>
</blockquote></div><br></div>
</div></div><br>_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org" target="_blank">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>
<br></blockquote></div><br></div>
</div></div></blockquote></div><br></div>