Hi all, One of the concerns regarding guile-log in it's earlier state was if it code cope with multithreading and the functional style of kanren suggests that stack based logic programming will suffer with regard to multithreading. But on the other hand an optimized kanren is about 7x slower using an assoc managed in C and maybe 5x slower using a functional tree (a random index was randomized at variable creation and then used to create a functional look-up table via a functional tree. So it would be attractive to combine those two features and yes with guile-log we have
* multiple stacks, especially one stack per thread is possible * we can mix stack based and assoc based variable binding Using this method one can device a method that in one thread generates cases using assoc based binding and then hand over that data-structure to a stack based search in a thread of it's own. with this one should be able to effectively process many logic programs in multiple cores. Using some multithread toolbox. So I would say that we are in a pretty good state to get a really potent logic solver for guile once we get a native compiler and a possibility to make fast c-calls in guile. Constructing and testing this is on my todo list for guile-log. /Stefan
