Clojure

Clojure
Clojure Logo
Basisdaten
Paradigmen: Funktionale Programmiersprache
Erscheinungsjahr: 2007
Entwickler: Rich Hickey
Aktuelle Version: 1.12.4  (10. Dezember 2025)
Typisierung: dynamisch, stark
Beeinflusst von: Lisp, Prolog, ML, Erlang, Haskell, Java
Betriebssystem: Windows, Linux, macOS, Solaris, FreeBSD
Lizenz: Eclipse Public License
clojure.org

Clojure [ˈkləʊʒə(r)] ist ein moderner Lisp-Dialekt, der interaktive Entwicklung unterstützt. Die Sprache fördert einen funktionalen Stil, der nebenläufige Programmierung stark vereinfacht. Clojure läuft in der Java Virtual Machine und ist eng mit der Java Runtime integriert. Eine JavaScript-Implementierung mit dem Namen ClojureScript sowie eine CLR-Implementierung existieren ebenso. Das Makrosystem ist mit dem anderer Lisp-Umgebungen vergleichbar, unterstützt jedoch (anders als etwa Common Lisp) keine Reader-Macros.

Gängige Hilfsmittel zur Paketverwaltung und zur Kompilierung von Clojure-Programmen sind tools.build, Leiningen oder Boot.

Beispiele

Vollständige Hallo-Welt-Programme:

textuell im Lisp-Stil:

(println "Hallo Welt!")

grafisch mit Hilfe der Java-Bibliothek Swing:

(javax.swing.JOptionPane/showMessageDialog nil "Hallo Welt!")

Die Fakultäts-Funktion als Beispiel für Rekursion in Clojure:

(defn factorial [n]
  "tail recursive version of n!"
  (loop [cur n, acc 1]
    (if (<= cur 1)
      acc
      (recur (dec cur) (*' cur acc)))))

Die Fakultäts-Funktion durch Verwendung von Funktionen höherer Ordnung:

(defn fac [n]
  (reduce *' (range 1 (inc n))))

Merkmale von Clojure

Homoikonizität

Als Lisp-Dialekt spielt das Prinzip Code als Daten bzw. Homoikonizität eine wichtige Rolle. Das Makrosystem von Clojure beruht auf dieser Eigenschaft und erlaubt so Metaprogrammierung. Konkret kann Clojure davon profitieren, indem es Eigenschaften, die in anderen Programmiersprachen fest integriert sind, als Bibliotheken zur Verfügung stellt. Als Beispiele seien hier Pattern Matching und ein Typsystem genannt.

IDE-Unterstützung

Literatur

Commons: Clojure – Sammlung von Bildern, Videos und Audiodateien
Wikibooks: Clojure Programming – Lern- und Lehrmaterialien (englisch)

Einzelnachweise

  1. ↑ Clojure Downloads
  2. ↑ Rich Hickey: Books that influenced Clojure. 30. Juni 2009, abgerufen am 24. August 2010 (englisch).
  3. ↑ Google Group Konversation zu Reader-Macros mit Clojure-Gründer Rich Hickey (in Englisch)
  4. ↑ Clojure for the Brave and True - Appendix B Appendix B: Boot, the Fancy Clojure Build Framework, auf braveclojure.com (englisch)
  5. ↑ core.match, auf github.com
  6. ↑ core.typed, auf github.com
  7. ↑ Light Table, auf lighttable.com
  8. ↑ Cursive
  9. ↑ CounterClockWise IDE, auf github.com
  10. ↑ vsClojure, auf github.com
  11. ↑ Clojure-Mode, auf github.com
  12. ↑ cider, auf github.com
  13. ↑ VimClojure : A filetype, syntax and indent plugin for Clojure, auf vim.org
  14. ↑ Clojure, auf marketplace.visualstudio.com
  15. ↑ Calva, auf marketplace.visualstudio.com
  16. ↑ Clojure Sublimed - Packages - Package Control. packagecontrol.io, abgerufen am 24. Februar 2022.