[Haskell-cafe] ANN: LogicGrowsOnTrees-

Gregory Crosswhite gcrosswhite at gmail.com
Mon Mar 17 04:16:20 UTC 2014


Dear Haskellers,

First, for those eager to skip directly to the more detailed documentation 
you can find an FAQ after the list of files at


as well as a tutorial and users guide in respectively TUTORIAL.md<http://github.com/gcross/LogicGrowsOnTrees/blob/master/TUTORIAL.md>and 
USERS_GUIDE.md<http://github.com/gcross/LogicGrowsOnTrees/blob/master/USERS_GUIDE.md>in the list of files.  The Hackage page with the reference documentation is 


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.

There are three packages that are sibling to this:

   - LogicGrowsOnTrees-processes<http://hackage.haskell.org/package/LogicGrowsOnTrees-processes>
   - LogicGrowsOnTrees-network<http://hackage.haskell.org/package/LogicGrowsOnTrees-network>
   - LogicGrowsOnTrees-MPI<http://hackage.haskell.org/package/LogicGrowsOnTrees-MPI>

The base package (LogicGrowsOnTrees<http://hackage.haskell.org/package/LogicGrowsOnTrees>) 
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.

For more information, see the links at the top of the post.

Thank you for your attention!  :-)

- Greg
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20140316/c4d63726/attachment.html>

More information about the Haskell-Cafe mailing list