“Read Me Clojure” is a programming manual for one of the more flexible and expressive languages designed for communication between humans and machines.
Clojure is a dialect of the Lisp language created by Rich Hickey, whose reference implementation runs on the Java Virtual Machine (JVM). It is a dynamically typed, general-purpose language with garbage collection and first-class support for functional programming. Beyond the formalism, expressiveness, and conciseness of Lisp, we get full access to the Java ecosystem – we can use both its built-in classes and methods as well as many third-party libraries.
Clojure is above all a functional language (most constructs are functions or behave like functions), although thanks to its support for shared mutable state and the ability to operate on objects, it can rightfully be called a multi-paradigm language.
Designed with concurrent execution in mind, Clojure achieves this goal by providing persistent data structures, which serve as the foundation for handling immutable data. When the need arises to express stable identities whose states may change over time, several so-called reference types are available.
Clojure has been used for some time in network programming – for example, in building web applications with asynchronous communication. This is a source of growing interest in the language, especially among those who also program in Python, Ruby, F#, or Java.
From the author
This manual originally began as personal notes I made while learning the language. I first posted early drafts on social networking sites, and after a few weeks I decided to give them proper structure and form, publishing the material on a website reactivated for – among other reasons – this very occasion.
I hope this tutorial will be useful to anyone who wants to learn Clojure and try the functional style of programming. Even if this particular language does not turn out to be the perfect fit for one’s practical needs, gaining familiarity with it will certainly sharpen coding skills across all other languages.
The material produced so far is divided into parts (hypertext documents), each containing at least one chapter devoted to a specific topic.
Legal notice
“Read Me Clojure” is a copyrighted work and I reserve all rights to it. For the time being, I do not permit reproduction, distribution, or public performance. Perhaps one day I will decide to release part or all of it, or publish it in another form.
I am making this manual available online because writing is not my primary source of income, and publishers’ and distributors’ margins are too high for it to be worthwhile to work with them at this point. My humble aspiration was for this collection of texts to contain as much knowledge – or more – as any book about Clojure available for purchase in the Polish language [in late 2013, when I started].
Second edition
The links to individual installments listed below constitute the second edition of the manual, published in August 2025.