(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)))