Build a datalog rule. Like this:
(<- (:head :x ?x :y ?y) (:body-1 :x ?x :y ?y) (:body-2 :z ?z) (not! :body-3 :x ?x) (if > ?y ?z))
(defmacro <-
"Build a datalog rule. Like this:
(<- (:head :x ?x :y ?y) (:body-1 :x ?x :y ?y) (:body-2 :z ?z) (not! :body-3 :x ?x) (if > ?y ?z))"
[hd & body]
(let [head (build-atom hd :clojure.contrib.datalog.literals/literal)
body (map build-literal body)]
`(is-safe? (build-rule ~head [~@body]))))
Comments top
No comments for <-. Log in to add a comment.