Paradigm | multi-paradigm: |
---|---|
Family | Lisp |
Designed by | Rich Hickey |
First appeared | 2007 |
Stable release | 1.11.2[8]
/ 8 March 2024 |
Typing discipline | |
Memory management | Garbage collection via a host (JVM, CLR, a JavaScript runtime such as V8 in case of ClojureScript or BEAM (see below) |
Platform | |
License | Eclipse Public |
Filename extensions |
|
Website | clojure |
Dialects | |
ClojureScript, ClojureDart | |
Influenced by | |
Influenced | |
|
Clojure (/ˈkloʊʒər/, like closure)[17][18] is a dynamic and functional dialect of the programming language Lisp on the Java platform.[19][20]
Like most other Lisps, Clojure's syntax is built on S-expressions that are first parsed into data structures by a Lisp reader before being compiled.[21][17] Clojure's reader supports literal syntax for maps, sets, and vectors along with lists, and these are compiled to the mentioned structures directly.[21] Clojure treats code as data and has a Lisp macro system.[22] Clojure is a Lisp-1 and is not intended to be code-compatible with other dialects of Lisp, since it uses its own set of data structures incompatible with other Lisps.[22]
Clojure advocates immutability and immutable data structures and encourages programmers to be explicit about managing identity and its states.[23] This focus on programming with immutable values and explicit progression-of-time constructs is intended to facilitate developing more robust, especially concurrent, programs that are simple and fast.[24][25][17] While its type system is entirely dynamic, recent efforts have also sought the implementation of a dependent type system.[26]
The language was created by Rich Hickey in the mid-2000s, originally for the Java platform; the language has since been ported to other platforms, such as the Common Language Runtime (.NET). Hickey continues to lead development of the language as its benevolent dictator for life.
release/clojure1-11-2
was invoked but never defined (see the help page).