pko*_*uer 2 clojure clojure-core.logic
想知道关于如何代码应与问候的弃用而改变任何帮助defrel和事实,并移动PLDB?
这是代码:
(defrel parent x y)
(facts parent ’[[dave kaylen]
[frank dave]])
(defn grandparent
[x y]
(fresh [z]
(parent x z)
(parent z y)))
;; In the REPL
user> (run* [q]
(fresh [x y]
(grandparent x y)
(== q [x y])))
;; Result
([frank kaylen])
Run Code Online (Sandbox Code Playgroud)
(ns your.ns.here
(:require [clojure.core.logic.pldb :as pldb]
[clojure.core.logic :refer :all]))
(pldb/db-rel parent p1 p2)
(def facts
(pldb/db
[parent 'dave 'kaylen]
[parent 'frank 'dave]))
(defn grandparent
[x y]
(fresh [z]
(parent x z)
(parent z y)))
(pldb/with-db facts
(doall (run* [q]
(fresh [x y]
(grandparent x y)
(== q [x y])))))
=> ([frank kaylen])
Run Code Online (Sandbox Code Playgroud)
有关更多示例,请参阅core.logic源代码中的pldb测试
| 归档时间: |
|
| 查看次数: |
790 次 |
| 最近记录: |