Sök…


Anmärkningar

ange bildbeskrivning här

Clojure är ett dynamiskt typiskt allmänt programmeringsspråk med Lisp-syntax.

Dess funktioner stöder den funktionella programmeringsstilen med förstklassiga funktioner och immutable värden som standard. Att använda omfördelningsbara variabler är inte lika enkelt i Clojure som på många vanliga språk, eftersom variabler måste skapas och uppdateras som containerobjekt. Detta uppmuntrar till användning av rena värden som kommer att förbli som de var i det ögonblick som de sågs senast. Detta gör koden vanligtvis mycket mer förutsägbar, testbar och samtidigt kapabel. Detta fungerar också för samlingar, eftersom Clojures inbyggda datastrukturer är bestående.

För prestanda stöder Clojure typtips för att eliminera onödig reflektion där det är möjligt. Dessutom kan grupper av ändringar av ihållande samlingar göras till övergående versioner, vilket minskar mängden objekt som är inblandade. Detta är inte nödvändigt för det mesta, eftersom ihållande samlingar snabbt kan kopieras eftersom de delar mest av sina uppgifter. Deras prestationsgarantier är inte långt ifrån deras muterbara motsvarigheter.

Bland andra funktioner har Clojure också:

  • mjukvara transaktionsminne (STM)
  • flera samtidiga primitiv som inte involverar manuell låsning (atom, agent)
  • komposerbara sekvenstransformatorer (givare),
  • funktionella trädmanipuleringsanläggningar (blixtlås)

På grund av dess enkla syntax och höga utdragbarhet (via makron, implementering av kärngränssnitt och reflektion) kan vissa vanliga språkfunktioner läggas till i Clojure med bibliotek. Exempelvis ger core.typed en kontroller av statisk typ, core.async ger enkla core.async samtidighetsmekanismer, core.logic ger logisk programmering.

Utformat som ett värdspråk kan det samverka med den plattform den körs på. Medan det primära målet är JVM och hela ekosystemet bakom Java, kan alternativa implementeringar också köras i andra miljöer, till exempel ClojureCLR som körs på Common Language Runtime eller ClojureScript som körs på JavaScript-körtider (inklusive webbläsare). Även om alternativa implementeringar kan sakna en del av funktionaliteten från JVM-versionen, betraktas de fortfarande som en språkfamilj.

versioner

Version Ändra logg Utgivningsdatum
1,8 Senaste ändringslogg 2016/01/19
1,7 Ändra log 1.7 2015/06/30
1,6 Ändra log 1.6 2014/03/25
1.5.1 Ändra log 1.5.1 2013/03/10
1,4 Ändra logg 1.4 2012-04-15
1,3 Ändra logg 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 och installation

Alternativ 1: Leiningen

Kräver JDK 6 eller nyare.

Det enklaste sättet att komma igång med Clojure är att ladda ner och installera Leiningen, de facto standardverktyget för att hantera Clojure-projekt, och sedan köra lein repl att öppna en REPL .

Linux

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

OS X

Följ Linux-stegen ovan eller installera med MacOS-pakethanterare.

Installera med Homebrew

brew install leiningen

Installera med MacPorts

Installera först Clojure

sudo port -R install clojure

Installera Leiningen , ett byggverktyg för Clojure

sudo port -R install leiningen
lein self-install

Windows

Se den officiella dokumentationen .

Alternativ 2: Officiell distribution

Kräver JRE 6 eller nyare.

Clojure-utgåvor publiceras som enkla JAR- filer som kan köras på JVM. Detta är vad som vanligtvis händer i Clojure-byggverktygen.

  1. Gå till http://clojure.org och ladda ner det senaste Clojure-arkivet

  2. Extrahera den nedladdade ZIP- filen till en katalog du väljer

  3. Kör java -cp clojure-1.8.0.jar clojure.main i den katalogen

    Du kanske måste ersätta clojure-1.8.0.jar i det kommandot med namnet på JAR-filen som du faktiskt laddade ner.

    För en bättre REPL-upplevelse av kommandoraden (t.ex. genom att cykla genom dina tidigare kommandon), kanske du vill installera rlwrap : rlwrap java -cp clojure-1.8.0.jar clojure.main

Alternativ 3: Boot

Kräver JDK 7 eller nyare.

Boot är ett multifunktions Clojure-byggverktyg. Att förstå det kräver viss kunskap om Clojure, så det kanske inte är det bästa alternativet för nybörjare. Se webbplatsen (klicka på Kom igång där) för installationsinstruktioner.

När den väl är installerad och i din PATH kan du köra boot repl helst för att starta en Clojure REPL.

"Hej världen!" i REPL

Clojure-gemenskapen lägger stor vikt vid interaktiv utveckling, så det inträffar en hel del interaktion med Clojure inom en REPL (read-eval-print-loop) . När du matar in ett uttryck läser Clojure det, utvärderar det och skriver ut resultatet av utvärderingen, allt i en slinga .

Du borde kunna lansera en Clojure REPL nu. Om du inte vet hur, följ avsnittet Installation och installation i det här ämnet. När du har kört det skriver du följande i det:

(println "Hello, world!")

Tryck sedan på Enter . Detta bör skriva ut Hello, world! följt av detta uttrycks returvärde, nil .

Om du vill köra lite clojure direkt, prova online REPL. Till exempel http://www.tryclj.com/ .

Skapa en ny applikation

Starta ett nytt projekt genom att följa anvisningarna ovan och installera Leiningen:

lein new <project-name>

Detta ställer in ett Clojure-projekt med standard Leiningen-mallen i mappen <project-name> . Det finns flera mallar för Leiningen som påverkar projektets struktur. Vanligtvis används mallen "app" som lägger till en huvudfunktion och förbereder projektet för att packas i en burk-fil (som huvudfunktionen är startpunkten för applikationen). Detta kan uppnås med detta genom att köra:

lein new app <project-name> 

Förutsatt att du använde app-mallen för att skapa en ny applikation kan du testa att allt var korrekt inställt, genom att gå in i den skapade katalogen och köra applikationen med:

lein run

Om du ser Hello, World! på din konsol är du redo att börja bygga din applikation.

Du kan packa den här enkla applikationen i två burkfiler med följande kommando:

lein uberjar

"Hej världen!" med Boot

Obs! Du måste installera Boot innan du provar detta exempel. Se avsnittet Installation och installation om du inte har installerat det ännu.

Boot gör det möjligt att göra körbara Clojure-filer med shebang (#!). Placera följande text i en valfri fil (det här exemplet antar att det finns i den "aktuella arbetskatalogen" och heter hello.clj ).

#!/usr/bin/env boot

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

Markera det sedan som körbart (om tillämpligt, vanligtvis genom att köra chmod +x hello.clj ).
... och kör den ( ./hello.clj ).

Programmet ska mata ut "Hej, världen!" och klar.

Skapa en ny applikation (med start)

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

Det här kommandot säger boot att greppa uppgiften boot-new från https://github.com/seancorfield/boot-new och utföra uppgiften med app (se länk för andra mallar). Uppgiften skapar en ny katalog som heter <appname> med en typisk Clojure-applikationsstruktur. Se den genererade README för mer information.

Så här kör du applikationen: boot run . Andra kommandon anges i build.boot och beskrivs i README.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow