Clojure

Clojure
Paradigmmulti-paradigm:
FamilyLisp
Designed byRich Hickey
First appeared2007; 17 years ago (2007)
Stable release
1.11.2[8] / 8 March 2024; 8 months ago (2024-03-08)
Typing discipline
Memory managementGarbage collection via a host (JVM, CLR, a JavaScript runtime such as V8 in case of ClojureScript or BEAM (see below)
Platform
LicenseEclipse Public
Filename extensions
  • .clj
  • .cljs
  • .cljr
  • .cljc
  • .cljd
  • .edn
Websiteclojure.org
Dialects
ClojureScript, ClojureDart
Influenced by
Influenced

Clojure (/ˈklʒə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.

  1. ^ "Agents and Asynchronous Actions". Clojure.org. Retrieved 2019-07-07.
  2. ^ "Concurrent Programming". Clojure.org. Retrieved 2019-07-07.
  3. ^ Hickey, Rich; contributors. "core.async". GitHub. Retrieved 2019-07-07.
  4. ^ "Functional Programming". Clojure.org. Retrieved 2019-07-07.
  5. ^ Nolen, David; Hickey, Rich. "core.logic". GitHub. Retrieved 2019-07-07.
  6. ^ "Macros". Clojure.org. Retrieved 2019-07-07.
  7. ^ Esterhazy, Paulus. "Threading Macros Guide". Clojure.org. Retrieved 2019-07-07.
  8. ^ Cite error: The named reference release/clojure1-11-2 was invoked but never defined (see the help page).
  9. ^ Fogus, Michael (2011). "Rich Hickey Q&A". CodeQuarterly.com. Archived from the original on 2017-01-11.
  10. ^ Hickey, Rich (2011). "Simple Made Easy". YouTube.[better source needed]
  11. ^ Bonnaire-Sergeant, Ambrose (2012). A Practical Optional Type System for Clojure (Thesis). The University of Western Australia.
  12. ^ "Clojure Programming" (PDF). OReilly.com. Retrieved 2013-04-30.
  13. ^ Hickey, Rich. "Clojure Bookshelf". Amazon.com. Archived from the original on 2017-10-03. Retrieved 2019-07-07.
  14. ^ Rose, Calvin; contributors. "Janet Language". Janet-Lang.org. Retrieved 2023-02-18.
  15. ^ Baldridge, Timothy. "Pixie". PixieLang.org. Retrieved 2019-07-07.
  16. ^ Ramachandra, Ramkumar. "Rhine". GitHub. Retrieved 2019-07-07.
  17. ^ a b c Edwards, Kathryn (2009-08-10). "The A-Z of Programming Languages: Clojure". Computerworld.com.au. Archived from the original on 2019-08-26.
  18. ^ Hickey, Rich (2009-01-05). "meaning and pronunciation of Clojure". Google.com.
  19. ^ Krill, Paul (2012-03-22). "Clojure inventor Hickey now aims for Android". InfoWorld.com.
  20. ^ "Clojure". Clojure.org. Retrieved 2019-07-07.
  21. ^ a b "The Reader". Clojure.org. Retrieved 2019-07-07.
  22. ^ a b "Differences with other Lisps". Clojure.org. Retrieved 2019-07-07.
  23. ^ "Values and Change: Clojure's approach to Identity and State". Clojure.org. Retrieved 2019-07-07.
  24. ^ Hickey, Rich. "Rationale". Clojure.org. Retrieved 2019-07-07.
  25. ^ Torre, Charles (2009-10-06). "Expert to Expert: Rich Hickey and Brian Beckman – Inside Clojure". MSDN.com.
  26. ^ "clojure/spec.alpha". GitHub. 2017-04-26.