I think we forgot to mention that you can use `recur` without loop too:
~~~{.clojure}
(defn last-element [a-seq]
  (cond (empty? a-seq) nil
       (empty? (rest a-seq)) (first a-seq)
       :else (recur (rest a-seq))))
~~~