Clojure

Functions

Multi-arity functions

(defn messenger
  ([]     (messenger "Hello world!"))
  ([msg]  (println msg)))

anonymous functions

(fn [message] (println message))

;; Equivalent to: (fn [x] (+ 6 x))
#(+ 6 %)

;; Equivalent to: (fn [x y & zs] (println x y zs))
#(println %1 %2 %&)
(apply f '(1 2 3 4))    ;; same as  (f 1 2 3 4)

Java interoperability

Instantiation new Widget("foo") (Widget. "foo")
Instance method rnd.nextInt() (.nextInt rnd)
Instance field object.field (.-field object)
Static method Math.sqrt(25) (Math/sqrt 25)
Static field Math.PI Math/PI

Data Structures

  • Lists are akin to linked-lists
  • Vectors are C++ vectors