This question is related to the interaction between two macros, one contained in the other. The two macros described are examples illustrating the interaction and not as the only case.
Consider a simple clojure macro which produces a side effect but otherwise passes its input unchanged.
(defmacro echo [action & args]
`(fn [tru#] (do (~action ~@args tru#) tru#)))
Usage
((echo log/info "result") :foo)
Include that macro in another macro, e.g. the ->> macro. My intuition says to do it like the following:
(->> :foo (echo log/info "result") clojure.pprint/pprint)
That does not work as the ->> macro goes first and inserts :foo which leaves the echo macro with the wrong arguments. One way to correct the problem is to introduce additional parenthesis but that seems ugly to me:
(->> :foo ((echo log/info "result")) clojure.pprint/pprint)
By ugly I mean it smells like c macros.