title: clojure - using loop and recur with a lazy sequence
body: <p>If I am returning a lazy-seq from a function like this:</p>
  
  <pre><code>(letfn [(permutations [s]
                (lazy-seq
                 (if (seq (rest s))
                   (apply concat (for [x s]
                                   (map #(cons x %) (permutations (remove #{x} s)))))
                   [s])))])
  </code></pre>
  
  <p>If I use loop recur like below, will the list be eagerly evaluated?</p>
  
  <pre><code>(loop [perms (permutations chain)]
         (if (empty? perms)
           (prn "finised")
           (recur (rest perms))))
  </code></pre>
  
  <p>If it is eagerly evaluated, can I use loop..recur to lazily loop over what is returned from the <code>permutations</code> function?</p>