;; good
(defn print-seq [s]
(when (seq s)
(prn (first s))
(recur (rest s))))
;; bad
(defn print-seq [s]
(when-not (empty? s)
(prn (first s))
(recur (rest s))))
Why use `seq` instead of `not-empty`? (defn print-seq [s]
(when (not-empty s)
(prn (first s))
(recur (rest s))))