title: What is the idiomatic way to prepend to a vector in Clojure?
body: <p>Prepending to a list is easy:</p>
  
  <pre><code>user=&gt; (conj '(:bar :baz) :foo)
  (:foo :bar :baz)
  </code></pre>
  
  <p>Appending to a vector is easy:</p>
  
  <pre><code>user=&gt; (conj [:bar :baz] :foo) 
  [:bar :baz :foo]
  </code></pre>
  
  <p>How do I (idiomatically) prepend to a vector, while getting back a vector?
  This does not work as it returns a seq, not a vector:</p>
  
  <pre><code>user=&gt; (cons :foo [:bar :baz])     
  (:foo :bar :baz)
  </code></pre>
  
  <p>This is ugly (IMVHO):</p>
  
  <pre><code>user=&gt; (apply vector (cons :foo [:bar :baz])) 
  [:foo :bar :baz]
  </code></pre>
  
  <p>Note: I basically just want a datastructure that I can append and prepend to. Appending to large lists should have a large performance penalty, so I thought of vectors..</p>