如何在clojure中调用函数并获得结果?

时间:2016-11-07 16:15:37

标签: clojure

我正在尝试使用Clojure实现amazon aws绑定,以便我可以通过发送isbn并获取它的xml报告来搜索一本书。然后我试图从报告中检索salesrank和书名。以下是我尝试使用的内容:https://github.com/FreeAgent/clj-amazon

我没有使用REPL,而是在src文件夹中创建了一个core2.clj,并将此代码添加到其中:

(ns clj_amazon.core2
(:use clj-amazon.core)
(:use clj-amazon.product-advertising)
(:gen-class))

(defn -main [& args]

(def ACCESS-KEY "my access code")

(def SECRET-KEY "my secret key" )

(def ASSOCIATE-ID "my id")

(def gibson-opus-search (with-signer (ACCESS-KEY, SECRET-KEY) (item-search :search-index "Books", :keywords "Neuromancer", :associate-tag ASSOCIATE-ID,    :condition "New")))

(gibson-opus-search)

)

如果我删除

(gibson-opus-search) 

并且跑步" lein run"在命令行中,我没有错误。我有正确的访问密钥/密钥,似乎代码工作正常。但我也没有打印报告。我是Clojure的新手,所以我不明白接下来应该做些什么。我试着用

调用函数
(gibson-opus-search)

,但后来我得到了这个错误:传递给persistentarraymap的错误数量的args(0)。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您正在使用gibson-opus-search定义def,用于分配值,而不是定义函数。您需要使用defn定义它,然后使用正确数量的参数调用它。