There is no explicit return value because the functions aren't functions: they are values, thus the result of the algorithm is bound to the value that is bound to the function.
When you write:
(defn square [x]
(* x x))
You are really writing:
(def square
(fn [x]
(* x x)))
and x * x is bound to the value of square. There would be no logical reason to have an explicit return value here.
Now in,
How would I implement the `return m` part ?