<div dir="ltr">







<p class="p1">Dear Haskellers,</p><p class="p1">First, for those eager to skip directly to the more detailed documentation you can find an FAQ after the list of files at</p>
<p class="p2">    <a href="http://github.com/gcross/LogicGrowsOnTrees">http://github.com/gcross/LogicGrowsOnTrees</a></p>
<p class="p1">as well as a tutorial and users guide in respectively <a href="http://github.com/gcross/LogicGrowsOnTrees/blob/master/TUTORIAL.md">TUTORIAL.md</a> and <a href="http://github.com/gcross/LogicGrowsOnTrees/blob/master/USERS_GUIDE.md">USERS_GUIDE.md</a> in the list of files.  The Hackage page with the reference documentation is at:</p>
<p class="p1">    <a href="http://hackage.haskell.org/package/LogicGrowsOnTrees">http://hackage.haskell.org/package/LogicGrowsOnTrees</a></p>
<p class="p1">Like many other packages on Hackage, LogicGrowsOnTrees provides an implementation of logic programming using MonadPlus;  in this sense it is nothing new.  What sets it apart is that it has been designed from the beginning to work in a distributed environment, allowing it to be parallelized over large numbers of processors with no shared memory.  The benchmarks I have run (using the N-Queens problem with 17-19 queens) showed essentially perfect speed-up all the way up to 256 cores, and the only reason why this number is not larger is because I haven't had the opportunity to run tests on a larger cluster.  Furthermore, I know from personal experience that complicated interfaces can take even the most powerful system and make it impotent, so I have tried hard to design interfaces that are easy to use and well-documented with a tutorial and several examples.</p>
<p class="p1">There are three packages that are sibling to this:</p><p class="p1"></p><ul><li><span style="line-height: 18px;"><a href="http://hackage.haskell.org/package/LogicGrowsOnTrees-processes">LogicGrowsOnTrees-processes</a></span><br></li><li><span style="line-height: 18px;"><a href="http://hackage.haskell.org/package/LogicGrowsOnTrees-network">LogicGrowsOnTrees-network</a><br></span></li><li><span style="line-height: 18px;"><a href="http://hackage.haskell.org/package/LogicGrowsOnTrees-MPI">LogicGrowsOnTrees-MPI</a></span></li></ul><p></p>
<p class="p1">The base package (<a href="http://hackage.haskell.org/package/LogicGrowsOnTrees">LogicGrowsOnTrees</a>) provides an "adapter" that allows one to use threads for parallelization;  the other packages above provide adapters for, respectively: processes, a network, and MPI.  Each one of these packages provides specialized functionality that can be used directly, but there is also an abstraction over all of them that can be used such that the only difference between the adapters for end-users is a single line of code.</p>
<p class="p1">For more information, see the links at the top of the post.</p>
<p class="p1">Thank you for your attention!  :-)</p>
<p class="p1">- Greg</p></div>