title: with-redefs on functions used inside maps
body: <p>I was wondering what is going on in the snippet below. Why isn't the function properly redefined without forcing the evaluation of the sequence?</p>
  
  <pre><code>user&gt; (defn foo [] (map vector (range 3)))
  #'user/foo
  user&gt; (defn bar [] (map #(vector %) (range 3)))
  #'user/bar
  user&gt; (foo)
  ([0] [1] [2])
  user&gt; (bar)
  ([0] [1] [2])
  user&gt; (with-redefs [vector (fn [_] "what does the fox say?")] (foo))
  ("what does the fox say?" "what does the fox say?" "what does the fox say?")
  user&gt; (with-redefs [vector (fn [_] "what does the fox say?")] (bar))
  ([0] [1] [2])
  user&gt; (with-redefs [vector (fn [_] "what does the fox say?")] (vec (bar)))
  ["what does the fox say?" "what does the fox say?" "what does the fox say?"]
  user&gt; 
  </code></pre>
  
  <p>Thanks!</p>