We've worked with Clojure for many years now, and have enjoyed using it to build projects, websites, products, and businesses of all kinds. We love the language, and we think you will too.
Clojure is a dynamic, general-purpose programming language that runs on the Java Virtual Machine that offers superior interactive development with the speed and reliable runtime of the JVM. Clojure Programming is our attempt to get you up to speed as efficiently and pleasantly as possible.
To ease your way, we included examples throughout the book to help relate aspects of Clojure to their analogues in Java, Ruby, and Python; these landmarks should help you keep your bearings throughout your new language adventures. Why those languages and not others? First, because nearly all programmers know at least one of them; and second, Clojure has a great deal to offer to Java, Ruby, and Python developers:
Engaged Java developers are usually found working in demanding environments solving nontrivial, often domain-specific problems. For you, you'll find Clojure to be welcome relief. It runs on the JVM with excellent performance characteristics, interoperates with all of your existing libraries, tools, and applications, and is simpler than Java yet remains demonstrably more expressive and more concise.
Ruby and Python developers are usually unwilling to compromise on language expressivity, developer happiness, and the joys of working within a thriving community. Clojure is a natural next step for you. It delivers on these things in spades, but runs on a more capable execution platform with better runtime performance and a larger selection of libraries than those available for either Ruby or Python.
In the end, we hope you find the book as accessible and as thought-provoking as Clojure itself.
Buy the ebook for Amazon's Kindle or as a PDF/ePub/.mobi direct from O'Reilly, or you can get the dead-tree variant from Amazon, Barnes & Noble, and any other bookseller with good taste! ;-)
If you like, we'll occasionally point you towards other tools, resources, and events that will help you get the most out of the book and Clojure itself, all hand-curated by us.
Follow @ClojureBook on Twitter; or,Reading through Clojure Programming; best coverage on practical topics like testing, web stack, and builds I've seen so far. Great place to start.
As I reviewed Clojure Programming, I kept thinking 'What an amazing piece of work!'. It really makes you connect the dots! Buy it!
Do you own a copy of Clojure
Programming already?
Please take a minute to
share your impressions in a review of your own on Amazon, on O'Reilly.com, or on
Twitter…
Clojure Programming by @cemerick is the book you need…
Clojure Programming is the best book on the market, and the best book for beginners IMHO.
I am a huge fan of Clojure Programming. It is now the book I recommend to everybody who asks me, "How do I learn Clojure?"
The perfect second Clojure book: Clojure Programming goes beyond the language basics and shows how to apply Clojure to a variety of practical tasks.
Been reading Clojure Programming. Great writing and organization of material. My favorite O'Reilly book since Real World Haskell.
I've read a lot of books on Clojure, and I must say that Clojure Programming is a real delight! It gives up new insights and a ton of good tips.
All of the code from the book (including sample projects, inline REPL interactions, etc) is available for browsing, download, cloning, and so on from Github. We will continue to keep that repository alive, so that the code therein is up to date, compatible with any future releases of Clojure, and so on. And, if you see any problems, please don't hesitate to open an issue.
nil
quote
do
def
let
let
, part 2)
fn
if
loop
and recur
var
.
and new
try
and throw
set!
monitor-enter
and monitor-exit
eval
apply
ing ourselves partial
lynil
valuesalter
commute
ref-set
locking
eval
quote
vs. syntax-quote
unquote
and unquote-splicing
&env
and &form
&env
&form
->
and ->>
reify
type
vs class
; or, the revenge of the mapwith-open
, finally
‘s lamentproxy
gen-class
deftype
and defrecord
classesclojure-mode
and paredit
inferior-lisp
identical?
)*
)**
)
clojure.test
assert
ions
with-query-results
explained_changes
: Abusing CouchDB as a message queue.war
files with Maven.war
files with Leiningen(dissoc Clojure ‘JVM)
core.logic