【发布时间】:2016-04-08 20:44:10
【问题描述】:
我想在以下示例代码中从[[:a :A] [:b :B] [:c :C]] 中删除[:b :B],如果我将:B 替换为(lvar),它将不再有效:
;; Helper Function
(defne not-membero [x l]
([_ []])
([_ [?y . ?r]]
(!= x ?y)
(not-membero x ?r)))
这些工作:
(run* [q]
(membero q [[:a :A] [:b :B] [:c :C]])
(not-membero q [[:b :B]]))
(run* [q]
(membero q [[:a :A] [:b :B] [:c :C]])
(!= q [:b :B]))
;; both return [[:a :A] [:c :C]], as expected
这些没有(注意lvar):
(run* [q]
(membero q [[:a :A] [:b :B] [:c :C]])
(not-membero q [[:b (lvar)]]))
(run* [q]
(membero q [[:a :A] [:b :B] [:c :C]])
(!= q [:b (lvar)]))
;; both return [[:a :A] [:b :B] [:c :C]], unexpected
【问题讨论】:
标签: clojure logic clojure-core.logic