clojure Handledning
Komma igång med clojure
Sök…
Anmärkningar
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.
Gå till http://clojure.org och ladda ner det senaste Clojure-arkivet
Extrahera den nedladdade ZIP- filen till en katalog du väljer
Kör
java -cp clojure-1.8.0.jar clojure.main
i den katalogenDu 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.