我正在尝试使用 Scala 包装器 Datomisca 编写一个调用2 个规则的Datomic查询。
如何组合两个单独的查询?
我的代码如下所示:
val rule1 = Query.rules("[[(rule1 ?a) [ ... ]]]")
val rule2 = Query.rules("[[(rule2 ?b) [ ... ]]]")
Datomic.q(Query("""[:find ?x
:in $ % %
:where (rule1 ?a) (rule2 ?b)]"""), conn.db(), rule1, rule2)
这给了我一个关于“无法解析密钥rule1
”的错误)。我只尝试了一个%
,但它不会编译(类型不匹配)。
我宁愿在对 的调用中不将它们组合在一个字符串中Query.rules
,因为这意味着我必须重复它们以使用不同的规则组合(例如:一个查询同时使用两者,另一个查询仅使用 rule1)。
由于Query.rules
是宏,我必须使用文字字符串值,否则将无法编译。