Naar inhoud springen

Clojure

Uit Wikipedia, de vrije encyclopedie
Clojure
Clojure
Paradigma multi-paradigma
Verschenen 2007
Ontworpen door Rich Hickey
Huidige versie 1.12.0[1] Bewerken op Wikidata
Typesysteem dynamisch
Beïnvloed door Lisp
Licentie EPL
Bestandsextensies .clj, .cljs
Website clojure.org
Portaal  Portaalicoon   Informatica

Clojure (/kloʊʒər/) is een dynamisch en functioneel dialect van de Lisp-programmeertaal, dat voornamelijk werkt op het Java-platform.

Net als de meeste andere Lisp-dialecten is de syntaxis van Clojure gebaseerd op S-expressies, die eerst door een reader in datastructuren worden geparsed, voordat ze worden gecompileerd. De reader van Clojure ondersteunt syntaxis voor maps, verzamelingen en vectoren, samen met lijsten. Deze worden rechtstreeks naar de genoemde structuren gecompileerd. Clojure behandelt code als gegevens en heeft een Lisp-macrosysteem. Clojure is een Lisp-1 en is niet bedoeld om code-compatibel te zijn met andere Lisp-dialecten, aangezien het zijn eigen verzameling datastructuren gebruikt die niet compatibel zijn met andere Lisps.

Clojure pleit voor onveranderlijkheid (immutability) en onveranderlijke datastructuren. Programmeurs worden aangemoedigd om expliciet te zijn over het beheer van identiteit en de toestand ervan. Deze focus op programmeren met onveranderlijke waarden en expliciete progressie-van-tijd-constructies is bedoeld om het ontwikkelen van programma's die gebruik maken van concurrency te vergemakkelijken. Hoewel het typesysteem volledig dynamisch is, hebben recente pogingen ook gestreefd naar de implementatie van een dependent typesysteem.

De taal werd halverwege de jaren 2000 gemaakt door Rich Hickey. Oorspronkelijk was de taal voor het Java-platform. Sindsdien is Clojure geporteerd naar andere platforms, zoals de Common Language Runtime (.NET). Hickey blijft de ontwikkeling van Clojure leiden als zijn Benevolent Dictator for Life.

De naam Clojure is volgens Hickey een woordspeling op het programmeerconcept "closure". De letters C, L en J staan respectievelijk voor C#, Lisp en Java - drie talen die een grote invloed hadden op het ontwerp van Clojure. Rich Hickey ontwikkelde Clojure omdat hij een moderne Lisp voor functioneel programmeren wilde, die symbiotisch is met het gevestigde Java-platform, en die ontworpen is om concurrency gemakkelijk te maken voor de programmeur.