Clojure—;“->;”中的部分宏

Clojure—;“->;”中的部分宏,clojure,Clojure,我刚刚开始使用Clojure,我想知道为什么下面的代码不能按预期工作: (-> 5 - (partial + 5)) 我希望这个表达式的结果是0(-5+5),但是整个过程似乎是局部的 (macroexpand `(-> 5 - (partial + 5)) #_=> ) (clojure.core/partial (clojure.core/-> 5 clojure.core/-) clojure.core/+ 5) 这是为什么?我该如何做我想做的

我刚刚开始使用Clojure,我想知道为什么下面的代码不能按预期工作:

(-> 5
    -
    (partial + 5))
我希望这个表达式的结果是0(-5+5),但是整个过程似乎是局部的

(macroexpand `(-> 5 - (partial + 5))
  #_=> )
(clojure.core/partial (clojure.core/-> 5 clojure.core/-) clojure.core/+ 5)

这是为什么?我该如何做我想做的事?

需要一组额外的参数:

user> (-> 5 - ((partial + 5)))                                                                                                                                            
0 

->
宏将上一个表达式的结果作为列表中的第二个参数插入,因此在您的示例中,它将使用额外的()插入到
(partial(-5)+5)
,插入到分部函数
((partial+5)(-5))

在这种情况下您可能不需要分部吗<代码>(>5-(+5))Aha,这很有道理。谢谢