为什么
(macroexpand '(.. arm getHand getFinger))
Run Code Online (Sandbox Code Playgroud)
扩展到
(. (. arm getHand) getFinger)
Run Code Online (Sandbox Code Playgroud)
而
(macroexpand '(-> arm getHand getFinger))
Run Code Online (Sandbox Code Playgroud)
扩展到
(getFinger (clojure.core/-> arm getHand))
Run Code Online (Sandbox Code Playgroud)
换句话说,为什么->第二个例子没有完全扩展呢?
小智 10
macroexpand仅扩展表单,直到函数位置中的符号不是宏.你在这种情况下注意到这一点的原因->是因为->宏是递归的.
在你的情况下,你想要macroexpand-all形式clojure.walk