->> is the thread-last macro. It evaluates one form and passes it as an argument to last in the next form.
Your code is equivalent to:
(reduce str (interpose ", " (map :subject scenes)))
Or, to see it differently:
(reduce str (interpose ", " (map :subject scenes)))
When reading clojure code, it is almost necessary to do it from the inside out or from the bottom up. Streaming macros let you read the code in what some say is a more logical order. "Take something, first do it, then do it, next ..."
source share