title: Is 'for' not actually lazy in clojure?
body: <pre><code>(take 2 (for [x (range 10)
                :let [_ (println x)]
                :when (even? x)] x))
  &gt;&gt; (* 0
  * 1
  * 2
  * 3
  * 4
  * 5
  * 6
  * 7
  * 8
  * 9
  0 2)
  </code></pre>
  
  <p>I assumed I was just being remarkably dense. But no, it turns out that Clojure actually evaluates the first 32 elements of any lazy sequence (if available). Ouch. </p>
  
  <p>I had a <code>for</code> with a recursive call in the <code>:let</code>. I was very curious as to why computation seemed to be proceeding in a breadth first rather than depth first fashion. It seems that computation (although, to be fair, not memory) was exploding as I kept going down all the upper branches of the recursive tree. Clojure's 32-chunking was forcing breadth first evaluation, even though the logical intent of the code was depth first.</p>
  
  <p>Anyway, is there any simple way to force 1-chunking rather than 32-chunking of lazy sequences?</p>