Logos is finally in good enough shape to be worth publishing to Clojars.
There are really too many changes to enumerate here, but if you're familiar
with Prolog, Logos is now far enough along that you can basically write
Prolog in Clojure and then some. Here's the evidence:

(defn-e nqueens-o [l]
  ([()])
  ([[[?x ?y] . ?others]]
     (exist []
      (nqueens-o ?others)
      (member-o ?y [1 2 3 4 5 6 7 8])
      (noattack-o [?x ?y] ?others))))

(defn-e noattack-o [q others]
  ([_ ()])
  ([[?x ?y] [[?x1 ?y1] . ?others]]
     (exist []
      (!= ?y ?y1)
      (nonrel/project [?y ?y1 ?x ?x1]
                      (!= (- ?y1 ?y) (- ?x1 ?x))
                      (!= (- ?y1 ?y) (- ?x ?x1)))
      (noattack-o [?x ?y] ?others))))

The big changes are:

* Pattern matching
* Goals can be tabled a la XSB
* Fairly efficient implementation of disequality constraints (and programs
w/o constraints are not penalized)

I've been begun porting some examples from Bratko's excellent Prolog book as
a guide for those who are interested here
https://github.com/swannodette/bratko-logos.

A note on performance: when the search space is not small Logos doesn't
perform as well as Prolog since it uses an interleaving strategy, and this
interleaving is currently implemented via liberal thunking. While I'm
interested in making Logos faster, I think many of the kinds of search
problems that are currently slower in Logos than in Prolog are best solved
with Constraint Logic Programming anyhow - which is the next major feature
for Logos.

Enjoy,
David

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to