Jas*_*ker 5 variables clojure partial
如果我执行以下操作:
user=> (-> ["1" "2"] (partial apply str))
#<core$partial__5034$fn__5040 clojure.core$partial__5034$fn__5040@d4dd758>
Run Code Online (Sandbox Code Playgroud)
......我得到了部分功能.但是,如果我将它绑定到变量:
user=> (def apply-str (partial apply str))
#'user/apply-str
user=> (-> ["1" "2" "3"] apply-str)
"123"
Run Code Online (Sandbox Code Playgroud)
......代码按照我的意图运作.我认为它们是相同的,但显然事实并非如此.有人可以解释为什么这对我来说?
- >是一个宏,因此它不必遵循您在应用程序方面所期望的规则.宏在评估表单之前转换源.尝试宏扩展表单:
user> (macroexpand '(-> ["1" "2"] (partial apply str)))
(partial ["1" "2"] apply str)
Run Code Online (Sandbox Code Playgroud)
你想通过使用' - >'宏来实现什么?
编辑:请注意:
user> ((partial apply str) ["1" "2"])
"12"
Run Code Online (Sandbox Code Playgroud)