Классы / Методы

;; Clojure has no in/out parameters: a function returns
;; the new values, and the caller binds them itself
(defn swap-strings [s1 s2]
  [s2 s1])

(def a "A")
(def b "B")

(let [[a b] (swap-strings a b)]
  ;; a is "B", b is "A"
  (println "inside: a is" a "b is" b))

;; the outer names never moved
(println "outside: a is" a "b is" b)