这似乎是或子句的用例:
'[:find ?e1
:where (or [?e1 :a ?e2]
[?e1 :b ?e2]
[?e1 :c ?e2])
[?e2 :x "X"]]
但它失败了Unable to resolve symbol: ?e1 in this context
。
答案 0 :(得分:0)
这样的事情应该有效
(let [rules '[(orclause ?e1 ?e2) [?e1 :a ?e2]
(orclause ?e1 ?e2) [?e1 :b ?e2]
(orclause ?e1 ?e2) [?e1 :c ?e2]]
dbval (d/db conn)]
(d/q '[:find ?e1
:in $ ?e2 %
:where (orclause ?e1 ?e2)]
dbval "X" rules))
答案 1 :(得分:0)
原来我只是使用了过时的版本,或者在0.9.5130中引入了子句。