Clojure - 部分在` - >`宏

Mat*_*w H 8 clojure

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

(-> 5
    -
    (partial + 5))
Run Code Online (Sandbox Code Playgroud)

我希望这个表达式的结果是0(-5 + 5),但整个事情似乎是偏的.

(macroexpand `(-> 5 - (partial + 5))
  #_=> )
(clojure.core/partial (clojure.core/-> 5 clojure.core/-) clojure.core/+ 5)
Run Code Online (Sandbox Code Playgroud)

为什么这样,我怎么能做我想做的事?

Art*_*ldt 10

需要一套额外的parens:

user> (-> 5 - ((partial + 5)))                                                                                                                                            
0 
Run Code Online (Sandbox Code Playgroud)

->宏插入前面的表达式,作为列表的第二个参数的结果,以便在例如,将exand到(partial (- 5) + 5)与所述额外的()它获取的部分功能之后插入((partial + 5) (- 5))