title: Clojure: cons (seq) vs. conj (list)
body: <p>I know that <code>cons</code> returns a seq and <code>conj</code> returns a collection.  I also know that <code>conj</code> "adds" the item to the optimal end of the collection, and <code>cons</code> always "adds" the item to the front.  This example illustrates both of these points:</p>
  
  <pre><code>user=&gt; (conj [1 2 3] 4) ; returns a collection
  [1 2 3 4]
  user=&gt; (cons 4 [1 2 3]) ; returns a seq
  (4 1 2 3)
  </code></pre>
  
  <p>For vectors, maps, and sets these differences make sense to me.  However, for lists they seem identical.</p>
  
  <pre><code>user=&gt; (conj (list 3 2 1) 4) ; returns a list
  (4 3 2 1)
  user=&gt; (cons 4 (list 3 2 1)) ; returns a seq
  (4 3 2 1)
  </code></pre>
  
  <p>Are there any examples using lists where <code>conj</code> vs. <code>cons</code> exhibit different behaviors, or are they truly interchangeable?  Phrased differently, is there an example where a list and a seq cannot be used equivalently?</p>