Clojure
Clojure ist ein modernes Lisp, das auf der Java Virtual Machine (JVM) läuft. Unter Fedora Silverblue, einem immutablen Betriebssystem, empfiehlt sich die Nutzung einer Toolbox, um Entwicklungsumgebungen isoliert und flexibel zu gestalten.
Dieses Tutorial zeigt dir, wie du Clojure samt Leiningen komfortabel in einer Toolbox unter Fedora Silverblue installierst und nutzt.
Voraussetzungen
- Fedora Silverblue (getestet mit Version 40)
- Eingeschaltete Toolbox-Unterstützung
- Internetzugang
Zunächst legen wir eine Toolbox für Clojure an:
|
|
Dann starten wir sie:
|
|
Systempakete installieren
In Fedora 40 kannst du z. B. java-21-openjdk
und rlwrap
verwenden:
|
|
Hinweis:
rlwrap
ist erforderlich für eine komfortable REPL-Nutzung mit History und Editierfunktionen. Ohne dieses Paket funktioniertclj
ggf. nicht richtig.
Clojure CLI installieren (offiziell empfohlen)
|
|
Teste mit:
|
|
Beende die REPL mit Ctrl+D
oder (exit)
.
Leiningen installieren
Leiningen ist das klassische Build- und Projektwerkzeug im Clojure-Ökosystem. Es erlaubt das einfache Anlegen, Verwalten und Ausführen von Projekten, das Einbinden von Abhängigkeiten sowie den Start einer REPL im Kontext des aktuellen Projekts. Für viele Tutorials und Beispielprojekte ist Leiningen nach wie vor der Standard.
|
|
Beim ersten Start lädt Leiningen seine eigenen Dateien (~/.lein).
Testlauf
|
|
Wenn du eine angenehmere Eingabe möchtest, kannst du rlwrap
nutzen:
|
|
Optionales Alias:
|
|
Erstes Projekt mit Leiningen
|
|
Der Code befindet sich in src/hello_world/core.clj
. Um das Projekt auszuführen:
|
|
Das sollte Hello, World!
ausgeben.
REPL starten und Funktion testen
|
|
Dann im REPL:
|
|
Erwartete Ausgabe:
Hello, world
Der Einstieg ist geschafft!
Tests mit clojure.test
Leiningen legt beim Projektstart automatisch ein Testverzeichnis an: test/hello_world/core_test.clj
.
In dieser Datei ist ein erstes Testgerüst enthalten. Du kannst es wie folgt anpassen:
|
|
Hinweis: Da
greet
nur aufprintln
basiert, gibt die Funktionnil
zurück. Deshalb wird genau das getestet.
Starte die Tests mit:
|
|
Erwartete Ausgabe:
Ran 1 tests containing 1 assertions.
0 failures, 0 errors.
Damit hast du den vollständigen Entwicklungszyklus mit Sourcecode, REPL und Tests durchlaufen.
Wenn du mit VS Code arbeitest, empfehlen wir das Plugin Calva.
VS Code + Calva
- Starte VS Code.
- Öffne den Erweiterungs-Manager (Ctrl+Shift+X).
- Suche nach
Calva
und installiere es.
Oder per CLI:
|
|
Features von Calva
- Intelligente REPL-Integration (auch mit Leiningen oder deps.edn)
- Inline-Auswertung und Anzeige von Resultaten im Editor
- Auto-Completion, Linting und Syntax-Highlighting
- Strukturierte Editierfunktionen (Parinfer, Paredit)
- NREPL-Verbindung zu laufenden Prozessen
Nach der Installation:
- Öffne ein Leiningen-Projekt.
- Öffne die Command Palette (Ctrl+Shift+P) →
Calva: Start a Project REPL and Connect
. - Wähle
Leiningen
als Startmethode.
Du kannst jetzt Clojure-Code direkt im Editor auswerten (Ctrl+Enter
) und die Resultate im Inline-Ausgabepuffer oder Terminal sehen.
Übungen
Um in Clojure richtig einzusteigen, habe ich einige Übungen vorbereitet:
Exkurs: Für LISP-Veteranen
Wenn du bereits in den 1980er Jahren mit LISP gearbeitet hast, wirst du dich an Funktionen wie car
, cdr
, cons
und null?
erinnern. Clojure basiert zwar konzeptionell auf LISP, verwendet aber modernere, aussagekräftigere Namen:
LISP | Clojure | Beschreibung |
---|---|---|
car | first | Erstes Element einer Liste |
cdr | rest | Restliste ohne das erste Element |
cons | cons | Element vorne an Liste anhängen |
list | list | Neue Liste erzeugen |
null? | empty? | Prüft, ob eine Sequenz leer ist |
Beispiel
|
|
Clojure bevorzugt lesbare Funktionsnamen, die auch für Neueinsteiger verständlich sind. Die Funktionalität ist gleich geblieben – aber die Bezeichner sind sprechender:
first
stattcar
rest
stattcdr
Das macht Code leichter lesbar, ohne an Ausdrucksstärke zu verlieren. Clojure arbeitet primär mit Sequences (abstrakte, lazy Datenstrukturen), nicht mit klassisch verketteten Listen. Die Konzepte sind aber übertragbar und du kannst weiterhin idiomatisch Listen verarbeiten – nur auf moderner Art.
Weitere Ressourcen und Tutorials
Hier sind einige empfohlene Tutorials, Bücher und Online-Ressourcen für deinen Clojure-Einstieg:
- Clojure for the Brave and True – das wohl bekannteste (und unterhaltsamste) freie Online-Buch.
- ClojureBridge Curriculum – didaktisch gut aufgebaut, ursprünglich für Workshops.
- Try Clojure – Web-REPL mit interaktiven Aufgaben.
- 4Clojure (Archiv) – viele kleine Übungsaufgaben für zwischendurch.
- Learn Reitit – für REST-APIs in Clojure.
- ClojureScript Quick Start – für Webentwicklung mit ClojureScript.