Creating long chains of transformation using the thrush operator looks attractive, but what if you need to see what it's doing?
Consider the following code:
Now it's obvious that this returns 3, and that the intermediate value was 2, but the following code proves it:
(defn thread-println [v prefix]
(doto v (->> (str prefix) println)))
(thread-println "Intermediate value was")
You'd need to write a second function for ->>, sadly.