clojureAan de slag met clojure


Opmerkingen

voer hier de afbeeldingsbeschrijving in

Clojure is een dynamisch getypeerde algemene programmeertaal met Lisp-syntaxis.

De functies ondersteunen standaard de functionele stijl van programmeren met eersteklas functies en onveranderlijke waarden. Het gebruik van opnieuw toewijsbare variabelen is niet zo eenvoudig in Clojure als in veel reguliere talen, omdat variabelen moeten worden gemaakt en bijgewerkt zoals containerobjecten. Dit stimuleert het gebruik van pure waarden die blijven zoals ze waren op het moment dat ze voor het laatst werden gezien. Dit maakt code doorgaans veel voorspelbaarder, testbaar en geschikt voor gelijktijdigheid. Dit werkt ook voor collecties, omdat de ingebouwde datastructuren van Clojure persistent zijn.

Voor prestaties ondersteunt Clojure typehints om onnodige reflectie waar mogelijk te elimineren. Ook kunnen groepen wijzigingen in permanente collecties worden aangebracht in tijdelijke versies, waardoor het aantal betrokken objecten wordt verminderd. Dit is meestal niet nodig, omdat permanente collecties snel kunnen worden gekopieerd, omdat ze de meeste gegevens delen. Hun prestatiegaranties zijn niet ver verwijderd van hun veranderlijke tegenhangers.

Clojure heeft onder andere ook:

  • software transactiegeheugen (STM)
  • verschillende concurrency primitives zonder handmatige vergrendeling (atoom, agent)
  • samengestelde sequentietransformatoren (transducers),
  • functionele boommanipulatiefaciliteiten (ritsen)

Vanwege de eenvoudige syntaxis en hoge uitbreidbaarheid (via macro's, implementatie van kerninterfaces en reflectie), kunnen een aantal veelgebruikte taalfuncties aan Clojure worden toegevoegd met bibliotheken. core.typed brengt bijvoorbeeld een statisch type checker, core.async brengt eenvoudige kanaalgebaseerde gelijktijdigheidsmechanismen, core.logic brengt logische programmering.

Ontworpen als een gehoste taal, het kan samenwerken met het platform waarop het draait. Hoewel het primaire doel JVM en het hele ecosysteem achter Java is, kunnen alternatieve implementaties ook in andere omgevingen worden uitgevoerd, zoals ClojureCLR op de Common Language Runtime of ClojureScript op JavaScript-runtimes (inclusief webbrowsers). Hoewel alternatieve implementaties mogelijk een deel van de functionaliteit van de JVM-versie missen, worden ze nog steeds beschouwd als één talenfamilie.

versies

Versie Wijzig logboek Publicatiedatum
1.8 Laatste wijzigingslogboek 2016/01/19
1.7 Wijzig log 1.7 2015/06/30
1.6 Wijzig log 1.6 2014/03/25
1.5.1 Log wijzigen 1.5.1 2013/03/10
1.4 Log wijzigen 1.4 2012-04-15
1.3 Wijzig log 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

"Hallo Wereld!" in de REPL

De Clojure-gemeenschap legt een grote nadruk op interactieve ontwikkeling, dus er gebeurt behoorlijk wat interactie met Clojure binnen een REPL (read-eval-print-loop) . Wanneer u er een uitdrukking in invoert, leest Clojure deze, evalueert deze en drukt het resultaat van de evaluatie af, alles in een lus .

Je zou nu een Clojure REPL moeten kunnen starten. Als u niet weet hoe, volg dan de sectie Installatie en instellingen in dit onderwerp. Zodra je het hebt uitgevoerd, typ je het volgende erin:

(println "Hello, world!")
 

Druk vervolgens op Enter . Dit zou moeten worden afgedrukt Hello, world! , gevolgd door de retourwaarde van deze uitdrukking, nil .

Als je meteen wat clojure wilt uitvoeren, probeer dan online REPL. Bijvoorbeeld http://www.tryclj.com/ .

"Hallo Wereld!" Boot gebruiken

Opmerking: u moet Boot installeren voordat u dit voorbeeld uitprobeert. Zie het gedeelte Installatie en instellingen als u het nog niet hebt geïnstalleerd.

Boot maakt het mogelijk uitvoerbare Clojure-bestanden te maken met behulp van shebang (#!) Regel. Plaats de volgende tekst in een bestand naar keuze (dit voorbeeld gaat ervan uit dat het in de "huidige werkmap" staat en heet hello.clj ).

#!/usr/bin/env boot

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

Markeer het vervolgens als uitvoerbaar (indien van toepassing, meestal door chmod +x hello.clj ).
... en voer het uit ( ./hello.clj ).

Het programma moet "Hallo wereld!" en afwerking.

Maak een Nieuwe Applicatie

Na het volgen van de bovenstaande instructies en het installeren van Leiningen, start u een nieuw project door te draaien:

lein new <project-name>
 

Hiermee wordt een Clojure-project met de standaard Leiningen-sjabloon in de map <project-name> . Er zijn verschillende sjablonen voor Leiningen, die de structuur van het project beïnvloeden. Meestal wordt de sjabloon "app" gebruikt, die een hoofdfunctie toevoegt en het project voorbereidt om te worden verpakt in een jar-bestand (waarvan de hoofdfunctie het beginpunt van de toepassing is). Dit kan worden bereikt door het uitvoeren van:

lein new app <project-name> 
 

Ervan uitgaande dat u de app-sjabloon hebt gebruikt om een nieuwe applicatie te maken, kunt u testen of alles correct is ingesteld door de gemaakte map te openen en de applicatie uit te voeren met:

lein run
 

Als je Hello, World! op je console, je bent helemaal klaar en klaar om te beginnen met het bouwen van je applicatie.

U kunt deze eenvoudige toepassing in twee jar-bestanden verpakken met de volgende opdracht:

lein uberjar
 

Maak een nieuwe applicatie (met boot)

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

Dit commando zal boot vertellen om de taak boot-new te pakken van https://github.com/seancorfield/boot-new en de taak uit te voeren met de app sjabloon (zie link voor andere sjablonen). De taak maakt een nieuwe map met de naam <appname> met een typische Clojure-applicatiestructuur. Zie de gegenereerde README voor meer informatie.

Om de applicatie uit te voeren: boot run . Andere opdrachten worden gespecificeerd in build.boot en beschreven in de README.

Installatie en instellingen

Optie 1: Leiningen

Vereist JDK 6 of nieuwer.

De eenvoudigste manier om aan de slag te gaan met Clojure is door Leiningen te downloaden en te installeren, de de facto standaardtool om Clojure-projecten te beheren en vervolgens lein repl te voeren om een REPL te openen.

Linux

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

OS X

Volg de bovenstaande Linux-stappen of installeer met macOS-pakketbeheerders.

Installeren met Homebrew

brew install leiningen

Installeren met MacPorts

Installeer eerst Clojure

sudo port -R install clojure

Installeer Leiningen , een build-tool voor Clojure

sudo port -R install leiningen
lein self-install

ramen

Zie de officiële documentatie .

Optie 2: officiële distributie

Vereist JRE 6 of nieuwer.

Clojure-releases worden gepubliceerd als eenvoudige JAR- bestanden die op de JVM kunnen worden uitgevoerd. Dit gebeurt meestal in de Clojure-buildtools.

  1. Ga naar http://clojure.org en download het nieuwste Clojure-archief

  2. Pak het gedownloade ZIP- bestand uit in een map naar keuze

  3. Voer java -cp clojure-1.8.0.jar clojure.main in die map

    Mogelijk moet u de clojure-1.8.0.jar in die opdracht vervangen door de naam van het JAR-bestand dat u daadwerkelijk hebt gedownload.

    Voor een betere opdrachtregel-REPL-ervaring (bijv. Door je vorige opdrachten rlwrap ), wil je misschien rlwrap installeren: rlwrap java -cp clojure-1.8.0.jar clojure.main

Optie 3: opstarten

Vereist JDK 7 of nieuwer.

Boot is een multifunctioneel Clojure-bouwgereedschap. Om het te begrijpen is enige kennis van Clojure vereist, dus het is misschien niet de beste optie voor beginners. Zie de website (klik op Aan de slag daar) voor installatie-instructies.

Zodra het is geïnstalleerd en in je PATH , kun je boot repl overal uitvoeren om een Clojure REPL te starten.