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

Zunächst legen wir eine Toolbox für Clojure an:

BASH
1
toolbox create --container clojure
Klicken Sie zum Erweitern und mehr anzeigen

Dann starten wir sie:

BASH
1
toolbox enter --container clojure
Klicken Sie zum Erweitern und mehr anzeigen

Systempakete installieren

In Fedora 40 kannst du z. B. java-21-openjdk und rlwrap verwenden:

BASH
1
sudo dnf install java-21-openjdk curl rlwrap git
Klicken Sie zum Erweitern und mehr anzeigen

Hinweis: rlwrap ist erforderlich für eine komfortable REPL-Nutzung mit History und Editierfunktionen. Ohne dieses Paket funktioniert clj ggf. nicht richtig.

Clojure CLI installieren (offiziell empfohlen)

BASH
1
2
3
curl -O https://download.clojure.org/install/linux-install-1.11.1.1208.sh
chmod +x linux-install-1.11.1.1208.sh
sudo ./linux-install-1.11.1.1208.sh
Klicken Sie zum Erweitern und mehr anzeigen

Teste mit:

BASH
1
clj
Klicken Sie zum Erweitern und mehr anzeigen

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.

BASH
1
2
3
4
curl -O https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein
chmod +x lein
sudo mv lein /usr/local/bin/
lein
Klicken Sie zum Erweitern und mehr anzeigen

Beim ersten Start lädt Leiningen seine eigenen Dateien (~/.lein).

Testlauf

BASH
1
2
clj          # REPL der Clojure CLI
lein repl    # REPL aus einem Projektkontext
Klicken Sie zum Erweitern und mehr anzeigen

Wenn du eine angenehmere Eingabe möchtest, kannst du rlwrap nutzen:

BASH
1
rlwrap clj
Klicken Sie zum Erweitern und mehr anzeigen

Optionales Alias:

BASH
1
echo 'alias clj="rlwrap clj"' >> ~/.bashrc
Klicken Sie zum Erweitern und mehr anzeigen

Erstes Projekt mit Leiningen

BASH
1
2
lein new app hello-world
cd hello-world
Klicken Sie zum Erweitern und mehr anzeigen

Der Code befindet sich in src/hello_world/core.clj. Um das Projekt auszuführen:

BASH
1
lein run
Klicken Sie zum Erweitern und mehr anzeigen

Das sollte Hello, World! ausgeben.

REPL starten und Funktion testen

BASH
1
lein repl
Klicken Sie zum Erweitern und mehr anzeigen

Dann im REPL:

CLOJURE
1
2
3
(defn greet [] (println "Hello, world"))
#'hello-world.core/greet
(greet)
Klicken Sie zum Erweitern und mehr anzeigen

Erwartete Ausgabe:

PLAINTEXT
1
Hello, world
Klicken Sie zum Erweitern und mehr anzeigen

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:

CLOJURE
1
2
3
4
5
6
(ns hello-world.core-test
  (:require [clojure.test :refer :all]
            [hello-world.core :refer :all]))

(deftest test-greet
  (is (= nil (greet))))
Klicken Sie zum Erweitern und mehr anzeigen

Hinweis: Da greet nur auf println basiert, gibt die Funktion nil zurück. Deshalb wird genau das getestet.

Starte die Tests mit:

BASH
1
lein test
Klicken Sie zum Erweitern und mehr anzeigen

Erwartete Ausgabe:

PLAINTEXT
1
2
Ran 1 tests containing 1 assertions.
0 failures, 0 errors.
Klicken Sie zum Erweitern und mehr anzeigen

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

  1. Starte VS Code.
  2. Öffne den Erweiterungs-Manager (Ctrl+Shift+X).
  3. Suche nach Calva und installiere es.

Oder per CLI:

BASH
1
code --install-extension betterthantomorrow.calva
Klicken Sie zum Erweitern und mehr anzeigen

Features von Calva

Nach der Installation:

  1. Öffne ein Leiningen-Projekt.
  2. Öffne die Command Palette (Ctrl+Shift+P) → Calva: Start a Project REPL and Connect.
  3. 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:

🔄 Zurücksetzen

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:

LISPClojureBeschreibung
carfirstErstes Element einer Liste
cdrrestRestliste ohne das erste Element
consconsElement vorne an Liste anhängen
listlistNeue Liste erzeugen
null?empty?Prüft, ob eine Sequenz leer ist

Beispiel

CLOJURE
1
2
3
4
5
6
(def xs '(1 2 3))

(first xs)  ;; => 1
(rest xs)   ;; => (2 3)
(cons 0 xs) ;; => (0 1 2 3)
(empty? xs) ;; => false
Klicken Sie zum Erweitern und mehr anzeigen

Clojure bevorzugt lesbare Funktionsnamen, die auch für Neueinsteiger verständlich sind. Die Funktionalität ist gleich geblieben – aber die Bezeichner sind sprechender:

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:

Kommentare

Suche starten

Geben Sie Schlüsselwörter ein, um Artikel zu suchen

↑↓
ESC
⌘K Tastenkürzel