title: Is it possible to do destructured head/tail separation of lazy sequences in clojure?
body: <p>I see some examples that show we can get a nice head/tail destructuring of a sequence in clojure as follows:</p>
  
  <pre><code>(if-let [[x &amp; xs] (seq coll)]
  </code></pre>
  
  <p>However I assume this won't work as desired for lazy sequences because this puts the values into a vector, which aren't lazy.  I tried changing the vector form to a list form, and it gave me binding errors, quoted or not.</p>
  
  <p>Without having binding like this, it seems that if I've got a lazy sequence where each element was a computationally-intensive equation of the previous element, I'd have to do that computation twice to get the head and tail as separate statements, right?</p>
  
  <pre><code>(let [head (first my-lazy-seq) ;; has to calculate the value of head.
        tail (rest my-lazy-seq)] ;; also has to calculate the value of head to prepare the rest of the sequence.
  </code></pre>
  
  <p>Is there any way around this, or am I making an incorrect assumption somewhere?</p>