gpt4 book ai didi

clojure - 在查询中使用 Datomic pull

转载 作者:行者123 更新时间:2023-12-05 00:56:17 26 4
gpt4 key购买 nike

根据 Datomic 附带的“geting-started.clj”文件的第 54 行(在示例/西雅图下),我应该能够在查询中使用 pull 函数,如下所示:

(def pull-results (q '[:find (pull ?c [*]) :where [?c :community/name]] (db conn)))

但是,在我下面的代码中,我收到一个错误:IllegalArgumentException Argument [*] in :find is not a variable datomic.query/validate-query (query.clj:315)
(defn get-tag [] (d/q '[:find (d/pull ?e [*])
:where [?e :tag.tag/term]] (db conn)))

现在,在我看来,这两个结构相似。再加上从 http://docs.datomic.com/clojure/#datomic.api/pull 读取的 pull 函数 api 的事实。似乎:
(pull db pattern eid)

我会说自从编写西雅图代码以来 API 已经发生了变化。我对么?如果没有,这里发生了什么。谢谢

最佳答案

正如评论者指出的那样,问题正在通过 datomic.api/pull函数而不是使用拉表达式。澄清几点:

您没有调用 pull查询内部的函数,但使用称为 pull 的特殊表达式expression里面find条款。请注意,查询接受数据结构文字(为什么必须使用 quote/' )。 pull表达式是 query grammar 的一部分和数据日志解析器识别的东西,而不是在具有不同调用的 Datomic API 中直接调用 pull 函数。

关于clojure - 在查询中使用 Datomic pull,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36425099/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com