Abstract
Clojure was designed to be a general-purpose, practical functional language, suitable for use by professionals wherever its host language, e.g., Java, would be. Initially designed in 2005 and released in 2007, Clojure is a dialect of Lisp, but is not a direct descendant of any prior Lisp. It complements programming with pure functions of immutable data with concurrency-safe state management constructs that support writing correct multithreaded programs without the complexity of mutex locks.
Clojure is intentionally hosted, in that it compiles to and runs on the runtime of another language, such as the JVM. This is more than an implementation strategy; numerous features ensure that programs written in Clojure can leverage and interoperate with the libraries of the host language directly and efficiently.
In spite of combining two (at the time) rather unpopular ideas, functional programming and Lisp, Clojure has since seen adoption in industries as diverse as finance, climate science, retail, databases, analytics, publishing, healthcare, advertising and genomics, and by consultancies and startups worldwide, much to the career-altering surprise of its author.
Most of the ideas in Clojure were not novel, but their combination puts Clojure in a unique spot in language design (functional, hosted, Lisp). This paper recounts the motivation behind the initial development of Clojure and the rationale for various design decisions and language constructs. It then covers its evolution subsequent to release and adoption.
Publisher
Association for Computing Machinery (ACM)
Subject
Safety, Risk, Reliability and Quality,Software
Reference41 articles.
1. Anglican. 2020. Anglican web site. https://probprog.github.io/anglican/ (also at Internet Archive 5 March 2020 15:36:41 ). Anglican. 2020. Anglican web site. https://probprog.github.io/anglican/ (also at Internet Archive 5 March 2020 15:36:41 ).
2. Phil Bagwell. 2001. Ideal Hash Trees. http://infoscience.epfl.ch/record/64398 Technical report October 2001. Phil Bagwell. 2001. Ideal Hash Trees. http://infoscience.epfl.ch/record/64398 Technical report October 2001.
3. Philip Bagwell and Tiark Rompf. 2011. RRB-Trees: Efficient Immutable Vectors. 16. http://infoscience.epfl.ch/record/169879 Philip Bagwell and Tiark Rompf. 2011. RRB-Trees: Efficient Immutable Vectors. 16. http://infoscience.epfl.ch/record/169879
4. Equal rights for functional objects or, the more things change, the more they are the same
5. Multiversion concurrency control—theory and algorithms
Cited by
18 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Exploring API behaviours through generated examples;Software Quality Journal;2024-04-22
2. Hermes-3: Multi-component plasma simulations with BOUT++;Computer Physics Communications;2024-03
3. Clerk: Moldable Live Programming for Clojure;Companion Proceedings of the 7th International Conference on the Art, Science, and Engineering of Programming;2023-03-13
4. Clojure;Encyclopedia of Big Data Technologies;2023
5. The cost of passing - using deep learning AIs to expand our understanding of the ancient game of Go;International Journal of Networking and Computing;2023