Clojure:
Code organiseren in functies

Hoe te:

Clojure-functies worden gedefinieerd met defn, gevolgd door een naam, parameters en een lichaam. Hier is een snel voorbeeld.

(defn groet [naam]
  (str "Hallo, " naam "!"))

(groet "Alex") ; => "Hallo, Alex!"

Stel nu dat we de oppervlakte van een rechthoek willen berekenen. In plaats van alles samen te proppen, scheiden we het in twee functies:

(defn oppervlakte [lengte breedte]
  (* lengte breedte))

(defn print-oppervlakte [lengte breedte]
  (println "De oppervlakte is:" (oppervlakte lengte breedte)))

(print-oppervlakte 3 4) ; => De oppervlakte is: 12

Diepere Duik

Heel lang geleden zouden programmeurs gewoon al hun logica in een enkel blok proppen. Het was lelijk. Toen kwam gestructureerd programmeren langs, en functies werden een ding. In Clojure is elke functie first-class—je kunt ze rondgooien zoals elke andere waarde.

Alternatieven? Sommige mensen zouden misschien rommelen met multi-methoden of hogere-orde functies, maar die zijn slechts kruiden in de functiestoofpot.

Allemaal in de details van een functie: ze zijn onveranderlijk in Clojure, waardoor de kans op bijeffecten minder waarschijnlijk wordt. Ze leunen zwaar op recursie in plaats van typische lussen, wat goed samengaat met de functionele paradigma’s van de taal.

Zie Ook