Clojure:
Code in Funktionen organisieren
Wie man es macht:
Funktionen in Clojure werden mit defn
definiert, gefolgt von einem Namen, Parametern und einem Körper. Hier ein schnelles Beispiel.
(defn greet [name]
(str "Hallo, " name "!"))
(greet "Alex") ; => "Hallo, Alex!"
Nehmen wir nun an, wir möchten die Fläche eines Rechtecks berechnen. Statt alles zusammenzuwurschteln, trennen wir es in zwei Funktionen:
(defn area [length width]
(* length width))
(defn print-area [length width]
(println "Die Fläche beträgt:" (area length width)))
(print-area 3 4) ; => Die Fläche beträgt: 12
Tiefere Einblicke
Früher hämmerten Programmierer einfach all ihre Logik in einen einzigen Block. Es war unschön. Dann kam die strukturierte Programmierung und Funktionen wurden zum Ding. In Clojure ist jede Funktion erstklassig – du kannst sie herumschleudern wie jeden anderen Wert.
Alternativen? Manche Leute könnten mit Multimethoden oder höherwertigen Funktionen herumspielen, aber das sind nur Gewürze im Funktionseintopf.
Alles in den Details einer Funktion: sie sind in Clojure unveränderlich, was Nebeneffekte weniger wahrscheinlich macht. Sie stützen sich stark auf Rekursion anstelle von typischen Schleifen, was gut mit den funktionalen Paradigmen der Sprache harmoniert.
Siehe auch
- Der eigene Leitfaden von Clojure: https://clojure.org/guides/learn/functions
- Grundlagen der Funktionalen Programmierung: https://www.braveclojure.com/core-functions-in-depth/
- Rich Hickeys Vorträge: https://changelog.com/posts/rich-hickeys-greatest-hits - für Einblicke in die Philosophie von Clojure.