Practical Clojure

  • 4h 1m
  • Luke VanderHart, Stuart Sierra
  • Apress
  • 2010

This book is the first definitive reference for the Clojure language, providing both an introduction to functional programming in general and a more specific introduction to Clojure’s features. This book demonstrates the use of the language through examples, including features such as STM and immutability, which may be new to programmers coming from other languages.

  • Overview of functional programming and description of what sets Clojure apart from other languages
  • Detailed explanation of Clojure’s special features
  • Examples of real-world tasks that are well-suited to Clojure’s capabilities, starting with simple tasks and moving on to more complex applications

What you’ll learn

  • What Clojure is—more than just another Lisp
  • How to set up a Clojure environment
  • The structure and syntax of a Clojure program
  • Java interoperability
  • How to use Clojure for real-world tasks
  • Common idioms of Clojure code

About the Authors

Luke VanderHart is a professional software developer, currently living and working in Washington DC as a consultant with NuWave Solutions. He has over five years of experience working with the Java platform, and has worked on programs ranging from distributed client-server networks serving and synchronizing semantic XML data, to GUI development using Java Swing, to enterprise web portals serving tens of thousands of pages per day.He is a very active member of the Clojure community.

Stuart Sierra is an actor, writer, musician, and programmer in New York City. As assistant director of the Program on Law and Technology at Columbia University, he was the lead developer of the groundbreaking legal search engine, one of the first production web sites using Clojure. He is the author of many popular open-source Clojure libraries, including a testing framework, I/O utilities and an HTTP client. Sometimes he blogs at

In this Book

  • The Clojure Way
  • The Clojure Environment
  • Controlling Program Flow
  • Data in Clojure
  • Sequences
  • State Management
  • Namespaces and Libraries
  • Metadata
  • Multimethods and Hierarchies
  • Java Interoperability
  • Parallel Programming
  • Macros and Metaprogramming
  • Datatypes and Protocols
  • Performance