Я пытаюсь написать запрос Datomic, который вызывает 2 правила с использованием обертки Scala Datomisca.Объединение правил запроса в Datomisca
Как объединить два отдельных запроса?
Мой код выглядит следующим образом:
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
, потому что это означает, что я должен повторять их для использования разных комбинаций правил (например, один запрос с обоими, другой с только правилом 1).
С Query.rules
- это макрос, я должен использовать литералы для строковых значений, иначе он не будет компилироваться.