Control flow / Interruption of a control flow / "return" statement

(defn print-main-data []
  (println "print main data"))

(defn print-other-data []
  (println "print other data"))

;; there is no bare "return" to jump out with: the rest of the body
;; is simply put under a condition. "when" runs its tail or nothing
(defn print-some-data [print-all?]
  (print-main-data)
  (when print-all?
    (print-other-data)))

(print-some-data false)
(print-some-data true)

;; such a function still yields a value — the value of "when", nil
(println "the call returns" (pr-str (print-some-data false)))