Dieses Projekt richtet sich an Clojure-Einsteiger und soll einige Grundlagen bieten, um einen Einblick in diese Programmiersprache zu bekommen.
Es sollte Leiningen (ein Clojure Build-Tool) installiert sein.
Eine IDE deiner Wahl (IntelliJ + Cursive, Emacs + CIDER, VS Code, ...) kannst du auch verwenden, ist aber nicht zwingend notwendig.
Außerdem brauchen wir ein halbwegs aktuelles JDK.
Die Projektbeschreibung befindet sich src/einsteiger/core.clj. Richte deine IDE vorher ein, wenn du eine eigene verwenden möchtest. Alternativ starte die Web-IDE (siehe weiter unten).
Das Projekt kann in einer IDE deiner Wahl importiert werden. Die Konfiguration für IntelliJ + Cursive ist mit eingecheckt. Denke dran unten rechts im Editor noch "Paredit" zu "Parinfer" zu ändern, da es einen leichteren Einstieg gibt. Parinfer ordnet deine Klammern dann gemäß der Einrückung wohingegen Paredit explizite Befehle erwartet, um eine Klammer zu verschieben.
In jedem Fall solltest du prüfen, dass deine IDE ein entsprechendes Clojure Plugin liefert, damit direkt aus dem Editor heraus mit der REPL interagiert werden kann. Parinfer gibt es auch für die meisten IDEs. Sollte dir das gerade zu viel sein, kannst du unten die Web-IDE verwenden.
Solltest du keine IDE mit Clojure-Support eingerichtet haben, so kann auch die integrierte Web-IDE verwendet werden. Navigiere mit dem Terminal in das Root-Verzeichnis dieses Projekts und führe folgenden Befehl aus:
lein nightlight
Das startet eine Web-IDE, die unter http://localhost:4000 aufgerufen werden kann.
Der Code befindet sich in src/einsteiger/core.clj
.
Am heutigen Abend verwende ich folgende IDE, Plugins und Einstellungen:
- IntelliJ mit Cursive
- "Parinfer" zur Verwaltung der Klammern (unten rechts einstellbar in einem Clojure-Projekt, standard ist "Paredit")
- Farbige Klammern mit "Rainbow Parenthesis" (Einstellungen -> Languages & Framework -> Clojure)
- Leiningen (
brew install leiningen
) - JDK 13
Damit man schnell Code in die REPL schieben kann, kann ich nur empfehlen folgende Key Bindings nach Belieben einzurichten. Ich habe mal dahinter geschrieben, welche Tastenkombi ich so für meine Bindings verwende:
- Load File in REPL (Controlc, Controlk)
- Send Form Before Caret to REPL (Controlc, Controle)
- Send Top Form to REPL (Controlc, Controlc)
Alle Bindings befinden sich in Einstellungen -> Keymap -> Plug-Ins -> Cursive.
- Clojure Linter: clj-kondo mit IDE-Integration
- Save Actions, um den Code direkt beim Speichern zu formatieren
Solltest du noch mehr Aufgaben zu Clojure haben wollen, gibt es hier weitere Links: