Suche…


Bemerkungen

Geben Sie hier die Bildbeschreibung ein

Clojure ist eine dynamisch typisierte universelle Programmiersprache mit Lisp-Syntax.

Seine Funktionen unterstützen standardmäßig den funktionalen Stil der Programmierung mit erstklassigen Funktionen und unveränderlichen Werten. Die Verwendung von Variablen, die nicht zugewiesen werden können, ist in Clojure nicht so einfach wie in vielen gängigen Sprachen, da Variablen wie Containerobjekte erstellt und aktualisiert werden müssen. Dies fördert die Verwendung reiner Werte, die so bleiben, wie sie im Moment der letzten Betrachtung waren. Dadurch wird Code in der Regel viel vorhersehbarer, testbarer und für Parallelität geeignet. Dies funktioniert auch für Sammlungen, da die eingebauten Datenstrukturen von Clojure dauerhaft sind.

Für die Leistung unterstützt Clojure Typhinweise, um nach Möglichkeit unnötige Reflexionen zu vermeiden. Außerdem können Änderungsgruppen an persistenten Sammlungen an vorübergehenden Versionen vorgenommen werden, wodurch die Anzahl der betroffenen Objekte reduziert wird. Dies ist meistens nicht notwendig, da permanente Sammlungen schnell kopiert werden können, da sie den Großteil ihrer Daten gemeinsam nutzen. Ihre Leistungsgarantien sind nicht weit von ihren veränderlichen Kollegen entfernt.

Clojure bietet unter anderem:

  • Software-Transaktionsspeicher (STM)
  • Mehrere Gleichzeitigkeits-Primitive, die kein manuelles Sperren beinhalten (Atom, Agent)
  • zusammensetzbare Folgetransformatoren (Transducer),
  • funktionelle Baummanipulationsmöglichkeiten (Reißverschlüsse)

Aufgrund der einfachen Syntax und der hohen Erweiterbarkeit (über Makros, Implementierung von Kernschnittstellen und Reflektion) können einige häufig verwendete Sprachfeatures zu Clojure mit Bibliotheken hinzugefügt werden. Zum Beispiel enthält core.typed einen statischen core.async , core.async einfache kanalbasierte Parallelitätsmechanismen, core.logic Logikprogrammierung.

Als gehostete Sprache konzipiert, kann sie mit der Plattform, auf der sie ausgeführt wird, zusammenarbeiten. Während das Hauptziel JVM und das gesamte Ökosystem hinter Java ist, können alternative Implementierungen auch in anderen Umgebungen ausgeführt werden, z. B. ClojureCLR, das unter Common Language Runtime ausgeführt wird, oder ClojureScript, das unter JavaScript-Laufzeit (einschließlich Webbrowsern) ausgeführt wird. Während für alternative Implementierungen möglicherweise einige Funktionen der JVM-Version fehlen, gelten sie immer noch als eine Familie von Sprachen.

Versionen

Ausführung Änderungsprotokoll Veröffentlichungsdatum
1.8 Letztes Änderungsprotokoll 2016-01-19
1.7 Änderungsprotokoll 1.7 2015-06-30
1.6 Änderungsprotokoll 1.6 2014-03-25
1.5.1 Änderungsprotokoll 1.5.1 2013-03-10
1.4 Änderungsprotokoll 1.4 2012-04-15
1.3 Änderungsprotokoll 1.3 2011-09-23
1.2.1 2011-03-25
1.2 2010-08-19
1.1 2010-01-04
1,0 2009-05-04

Installation und Einrichtung

Option 1: Leiningen

Benötigt JDK 6 oder neuer.

Der einfachste Weg, um mit Clojure zu beginnen, ist das Herunterladen und Installieren von Leiningen, dem De-facto-Standardwerkzeug zum Verwalten von Clojure-Projekten. Anschließend wird mit lein repl eine REPL geöffnet.

Linux

curl https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein > ~/bin/lein
export PATH=$PATH:~/bin
chmod 755 ~/bin/lein

OS X

Folgen Sie den oben genannten Linux-Schritten oder installieren Sie sie mit den macOS-Paketmanagern.

Mit Homebrew installieren

brew install leiningen

Mit MacPorts installieren

Installieren Sie zuerst Clojure

sudo port -R install clojure

Installieren Sie Leiningen , ein Build-Tool für Clojure

sudo port -R install leiningen
lein self-install

Windows

Siehe die offizielle Dokumentation .

Option 2: Offizielle Verteilung

Benötigt JRE 6 oder neuer.

Clojure-Versionen werden als einfache JAR- Dateien veröffentlicht, die in der JVM ausgeführt werden können. Dies geschieht normalerweise in den Clojure-Build-Tools.

  1. Gehen Sie zu http://clojure.org und laden Sie das neueste Clojure-Archiv herunter

  2. Extrahieren Sie die heruntergeladene ZIP- Datei in ein Verzeichnis Ihrer Wahl

  3. java -cp clojure-1.8.0.jar clojure.main in diesem Verzeichnis java -cp clojure-1.8.0.jar clojure.main aus

    Möglicherweise müssen Sie die clojure-1.8.0.jar in diesem Befehl durch den Namen der tatsächlich heruntergeladenen JAR-Datei clojure-1.8.0.jar .

    Für ein besseres REPL-Erlebnis in der Befehlszeile (z. B. Durchlaufen der vorherigen Befehle) können Sie rlwrap installieren: rlwrap java -cp clojure-1.8.0.jar clojure.main

Option 3: Booten

Benötigt JDK 7 oder neuer.

Boot ist ein multifunktionales Clojure-Build-Tool. Um dies zu verstehen, sind einige Kenntnisse von Clojure erforderlich, daher ist dies möglicherweise nicht die beste Option für Anfänger. Installationsanweisungen finden Sie auf der Website (klicken Sie dort auf " Erste Schritte" ).

Sobald es installiert ist und sich in Ihrem PATH , können Sie boot repl überall boot repl , um eine Clojure REPL zu starten.

"Hallo Welt!" in der REPL

Die Clojure-Community legt großen Wert auf interaktive Entwicklung, sodass eine ganze Reihe von Interaktionen mit Clojure innerhalb einer REPL (Read-Eval-Print-Loop) stattfinden . Bei der Eingabe eines Ausdruck hinein, liest Clojure es, wertet sie aus und druckt das Ergebnis der Auswertung, die alle in einer Schleife.

Sie sollten jetzt eine Clojure REPL starten können. Wenn Sie nicht wissen, wie das geht, folgen Sie dem Abschnitt Installation und Setup in diesem Thema. Wenn Sie es ausgeführt haben, geben Sie Folgendes ein:

(println "Hello, world!")

Dann drücken Sie die Eingabetaste . Dies sollte Hello, world! ausdrucken Hello, world! , gefolgt vom Rückgabewert dieses Ausdrucks, nil .

Wenn Sie Clojure sofort ausführen möchten, versuchen Sie Online-REPL. Zum Beispiel http://www.tryclj.com/ .

Erstellen Sie eine neue Anwendung

Nachdem Sie die obigen Anweisungen befolgt und Leiningen installiert haben, starten Sie ein neues Projekt, indem Sie Folgendes ausführen:

lein new <project-name>

Dadurch wird ein Clojure-Projekt mit der Standardvorlage von Leiningen im Ordner <project-name> . Es gibt mehrere Vorlagen für Leiningen, die sich auf die Projektstruktur auswirken. Am häufigsten wird die Vorlage "app" verwendet, die eine Hauptfunktion hinzufügt und das Projekt zum Packen in eine JAR-Datei vorbereitet (wobei die Hauptfunktion der Eingangspunkt der Anwendung ist). Dies kann mit folgenden Schritten erreicht werden:

lein new app <project-name> 

Vorausgesetzt, Sie haben die App-Vorlage zum Erstellen einer neuen Anwendung verwendet, können Sie testen, ob alles korrekt eingerichtet wurde. Geben Sie dazu das erstellte Verzeichnis ein und führen Sie die Anwendung folgendermaßen aus:

lein run

Wenn Sie Hello, World! Auf Ihrer Konsole sind Sie fertig und können mit dem Erstellen Ihrer Anwendung beginnen.

Sie können diese einfache Anwendung mit dem folgenden Befehl in zwei JAR-Dateien packen:

lein uberjar

"Hallo Welt!" mit boot

Hinweis: Sie müssen Boot installieren, bevor Sie dieses Beispiel ausprobieren. Siehe Abschnitt Installation und Setup, falls Sie es noch nicht installiert haben.

Boot ermöglicht das Erstellen ausführbarer Clojure-Dateien mithilfe der Shebang- Zeile (#!). Fügen Sie den folgenden Text in eine Datei Ihrer Wahl ein (in diesem Beispiel wird davon hello.clj dass er sich im "aktuellen Arbeitsverzeichnis" befindet und hello.clj ).

#!/usr/bin/env boot

(defn -main [& args]
  (println "Hello, world!"))

Dann kennzeichnen Sie es als ausführbar (falls zutreffend, indem Sie normalerweise chmod +x hello.clj ).
... und führen Sie es aus ( ./hello.clj ).

Das Programm sollte "Hallo, Welt!" Ausgeben. und beende.

Neue Anwendung erstellen (mit Booten)

boot -d seancorfield/boot-new new -t app -n <appname>

Dieser Befehl weist boot an, die Aufgabe boot-new von https://github.com/seancorfield/boot-new zu übernehmen und die Task mit der app Vorlage auszuführen (siehe Link für andere Vorlagen). Die Task erstellt ein neues Verzeichnis mit dem Namen <appname> mit einer typischen Clojure-Anwendungsstruktur. Weitere Informationen finden Sie in der generierten README.

Um die Anwendung boot run : boot run . Andere Befehle werden in build.boot und in der build.boot beschrieben.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow