为什么
(macroexpand '(.. arm getHand getFinger))
扩展到
(. (. arm getHand) getFinger)
,而
(macroexpand '(-> arm getHand getFinger))
扩展为
(getFinger (clojure.core/-> arm getHand))
换句话说,为什么->
在第二个例子中没有完全展开?
答案 0 :(得分:10)
macroexpand
仅扩展表单,直到函数位置中的符号不是宏。您在->
的情况下注意到这一点的原因是因为->
宏是递归的。
在您的情况下,您希望macroexpand-all
形成clojure.walk