我刚刚开始使用Clojure,我想知道为什么以下内容无法正常工作:
(-> 5
-
(partial + 5))
我希望这个表达式的结果为0(-5 + 5),但整个事情似乎是偏的。
(macroexpand `(-> 5 - (partial + 5))
#_=> )
(clojure.core/partial (clojure.core/-> 5 clojure.core/-) clojure.core/+ 5)
为什么会这样,我怎么能做我想做的事?
答案 0 :(得分:10)
需要一套额外的parens:
user> (-> 5 - ((partial + 5)))
0
->
宏将前一个表达式的结果作为列表中的第二个参数插入,因此在您的示例中,它将扩展到(partial (- 5) + 5)
,并且在部分函数{之后插入extra() {1}}