> 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