;; Een keyword genaamd id
:id
;; Een map met een key :id die correspondeert met een value 5
;; Alle type data kunnen keys zijn maar het is de norm om keywords te gebruiken
{:id 5}
;; Meerdere entries
;; Dit vervangt wat in Java een POJO met attributes id en title geweest was
{:id 5 :title "Dark Souls"}
;; List: Een lijst met de semantiek van een LinkedList
(1 2 3 4 5)
;; Vector: Een lijst met de semantiek van een ArrayList
[1 2 3 4 5]
;; Definieer een variabel m die naar een map met entry [:id 5] verwijst
(def m {:id 5})
;; Definieer een function mult met parameters x en y die deze vermenigvuldigd
(defn mult [x y]
(* x y))
;; Het eerste element in een lijst wordt verwacht een functie te zijn die dan uitgevoerd wordt.
;; Hier roepen we de function mult aan met parameters 2 en 3 die 6 als resultaat geeft
(mult 2 3) => 6
;; Let laat ons toe om binnen een nieuwe scope variables te definiëren
;; Hier definiëren we de variable x als het resultaat van 5 * 6 en geven het resultaat -1 terug
(let [z (mult 5 6)]
(dec z)) => 29
;; Een map is ook een function die voor haar keys de corresponderende values geeft
(m :id) => 5
;; Een keyword is ook een functuin die zichzelf opzoekt
;; Dit voorbeeld zou niet werken als de key de string “id” was
(:id m) => 5