title: Clojure print values in `let` binding
body: <p>What is the idiomatic way of printing values inside a <code>let</code> binding ?</p>
  
  <p>When I started developing in Clojure, I wrote code in the REPL, that I then turned into simple <code>let</code> expressions. Being a beginner, I often made mistakes during this (simple) transformation phase.</p>
  
  <pre><code>(let [a (aFn ...)
         b (bFn ... a)]
     ;; error above
  )
  </code></pre>
  
  <p>So I would transform it back to something like that, basically inlining things :</p>
  
  <pre><code>(println "a is"    (aFn ...))
  (println "b is" (bFn ... (aFn ...)))
  (let [a (aFn ...)
         b (bFn ... a)]
     ;; ...
  )
  </code></pre>
  
  <p>It works most of the time thanks to Clojure being nice (immutability, referential transparency..).</p>
  
  <p>Now I do something along the lines of :</p>
  
  <pre><code>(let [a (aFn ...)
         _ (println "a is" a)
         b (bFn ... a)
        _ (println "b is" b)]
     ;; ...
  )
  </code></pre>
  
  <p>It is an improvement, but it still feels clumsy. What is the proper way to do this ?</p>