Clojure—;“->;”中的部分宏
我刚刚开始使用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) 这是为什么?我该如何做我想做的
(-> 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,这很有道理。谢谢