首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何传递数据体函数(对于Clojure API)

如何传递数据体函数(对于Clojure API)
EN

Stack Overflow用户
提问于 2013-09-02 16:40:35
回答 1查看 229关注 0票数 0

使用Clojure的数据体APi,我有一个体系结构,在这里我想传递一个要执行的事务函数。但是,试图调用在中传递的事务函数不起作用。爬虫认为它是一种象征。它进行计算,但没有提交任何数据,也没有返回未来,这意味着没有返回的事务ID。

但是,直接调用(datomic.api/transact conn [adatom]),就像预期的那样工作。我怎样才能让这个基本的场景工作呢?

代码语言:javascript
复制
(defn some-fn[conn mapped-fn adatom] 

  (datomic.api/transact conn [adatom])  ;; works 
  #_(mapped-fn conn [adatom]) ;; does not work - evaluates, but no data committed, no future returned, meaning, no returned transaction ID
)

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-03 15:24:53

你想做什么还不太清楚。例如:

  • 为什么不在d/transact中调用some-fn
  • mapped-fn是一个将应用于许多事实的函数(在本例中是d/transact)吗?
  • 什么是总体意图?

为了盲目地跟随你的榜样,它确实有效并返回了一个“未来”:

代码语言:javascript
复制
user=> (use '[datomic.api :only (db) :as d])
nil
user=> (d/create-database "datomic:mem://unsure-db")
false
user=> (def c (d/connect "datomic:mem://unsure-db"))
#'user/c
user=> (defn f [conn mapped-fn fact] (mapped-fn conn fact))
#'user/f
user=> (f c d/transact [])
#<promise$settable_future$reify__4526@2da07336: {:db-before datomic.db.Db@8835fddc, :db-after datomic.db.Db@6e2a2e78, :tx-data [#Datum{:e 13194139534313 :a 50 :v #inst "2013-09-03T15:23:34.977-00:00" :tx 13194139534313 :added true}], :tempids {}}>

确保您有一个有效的连接(例如,您连接到正确的数据库),并且数据库在那里。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18577601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档