small medium large xlarge

Programming Clojure, Third Edition, in print; Free iOS course

February 21, 2018

Trying to avoid accidental complexity? The Clojure language gets out of your way so you can focus on expressing simple solutions to hard problems. See how with Programming Clojure, Third Edition, now in print and shipping from Be sure to read below for 5 Tips for Thinking in Clojure to help you get started.

Free iOS Course

Chris Adamson has put together a video course (adapted from his weekly livestream) based on the book iOS 10 SDK Development: Creating iPhone and iPad Apps with Swift. You can work through the book, chapter by chapter, using the links available from, and yes, the content is good for iOS 11. If you don't have a copy of the ebook or paperback, you can buy that from as well, where you’ll also find sample code downloads.

Come and learn!


Programming Clojure, Third Edition

Clojure joins the flexibility and agility of Lisp with the reach, stability, and performance of Java. Combine Clojure's tools for maximum effectiveness as you work with immutable data, functional programming, and safe concurrency to write programs that solve real-world problems.

Start by reading and understanding Clojure syntax and see how Clojure is evaluated. From there, find out about the sequence abstraction, which combines immutable collections with functional programming to create truly reusable data transformation code. Clojure is a functional language; learn how to write programs in a functional style, and when and how to use recursion to your advantage. Discover Clojure's unique approach to state and identity, techniques for polymorphism and open systems using multimethods and protocols, and how to leverage Clojure's metaprogramming capabilities via macros. Finally, put all the pieces together in a real program.

New to this edition is coverage of Clojure's spec library, one of the most interesting new features of Clojure for describing both data and functions. You can use Clojure spec to validate data, destructure data, explain invalid data, and generate large numbers of tests to verify the correctness of your code.

With this book, you'll learn how to think in Clojure, and how to take advantage of its combined strengths to build powerful programs quickly.

5 Tips for Thinking in Clojure

  1. Rely on your REPL. Clojure (like other LISP languages) intends to provide a "live" development experience where you are actively manipulating and testing the program while you develop the code. To take full advantage of Clojure, it's essential to work in a development environment that allows you to interactively evaluate parts of your code while you develop. We are fortunate to have a variety of tool choices in Clojure that can satisfy those demands.
  2. Maps, not Objects. Developers coming from object-oriented languages are likely to look for the ability to create classes or objects to hold their data. Clojure takes a more direct and flexible approach to data, primarily storing information attributes in heterogenous maps. Rather than providing class-specific interfaces, Clojure provides a single generic data interface for creating, accessing, and transforming attribute-oriented information. The result is that modeling data and managing the evolution of data over time is generally much more generic and immediate than the equivalent operations in object-oriented languages.
  3. Collections, not Loops. Imperative languages encourage you to write loops that manipulate data elements one-by-one. In Clojure, you instead think primarily in collections, not loops. When transformations need to be applied, you use a functional approach to describe the transformation from one collection to another, which may involve mapping, filtering, or otherwise transforming data at the collection level.
  4. Isolate State. Clojure is not a pure functional language – it has constructs readily available to create and manage state, perform I/O, etc. However, most Clojure developers minimize the number of functions that work with these kinds of constructs. As much as possible, Clojure functions tend to be small and pure, just simple transformations of data to data. Clojure's model for all state manipulation is to describe stateful change as a function from prior state to new state. Stateful change thus becomes little more than the application of pure functions to data.
  5. Have Fun! Many people find Clojure to be one of the most enjoyable languages they've ever used. There is very little ceremony in the code, a literal syntax to easily represent data, a huge library of functions available for transforming data, and access to all of the existing functionality of the underlying host platform via either interop or libraries. Clojure gets out of the way and lets you get to work!

Now in print and shipping from

Upcoming Author Appearances

  • 2018-03-02 VM Brasseur, The Lead Developer, Austin, TX
  • 2018-03-05 Dmitry Zinoviev, CompleNet, Boston , MA
  • 2018-03-08 VM Brasseur, Southern California Linux Expo (SCALE), Pasadena, CA
  • 2018-03-19 Johanna Rothman, Boscon, Cambridge, MA
  • 2018-03-21 Jeremy Fairbank, JazzCon, New Orleans, LA
  • 2018-03-24 VM Brasseur, LibrePlanet, Cambridge, MA
  • 2018-03-29 Ryan Ripley, Code PaLOUsa 2018 – Louisville, Kentucky
  • 2018-03-30 Jeremy Fairbank, Lambda Squared, Knoxville, TN
  • 2018-04-17 VM Brasseur, Open Source 101, Columbia, SC
  • 2018-04-17 VM Brasseur, Open Source 101, Columbia, SC
  • 2018-04-20 Jeremy Fairbank, CodeStock, Knoxville, TN
  • Who Are We?

    The Pragmatic Bookshelf publishing imprint is wholly owned by The Pragmatic Programmers, LLC.

    Andy Hunt and Dave Thomas founded the company with a simple goal: to improve the lives of developers. We create timely, practical books, audio books, and videos on classic and cutting-edge topics to help you learn and practice your craft.

    We are not a giant, faceless, greed-soaked corporation. We're a small group of experienced professionals committed to helping make software development easier.

    Don't Get Left Out

    Are your friends jealous that you get these spiffy email newsletters and they don't? Clue them in that all they need to do is create an account on (email address and password is all it takes) and select the checkbox to receive newsletters.

    Are you following us on Twitter and/or Facebook? Here's where you can find us and keep up with the latest news and commentary, and occasional discounts:

    Tell your friends! Tweet this

    Follow us on Twitter: @pragprog, @pragpub, Andy Hunt @PragmaticAndy.

    Coming Soon:

    • Programming Clojure, Third Edition, in print
    • Learn Functional Programming with Elixir: New Foundations for a New World, in print
    • Rediscovering JavaScript: Master ES6, ES7, and ES8, in beta
    • Software Design X-Rays: Fix Technical Debt with Behavioral Code Analysis, in print

    Recently Released:

    Thanks for your continued support,

    Andy Hunt Publisher, Pragmatic Bookshelf

    Books • eBooks • PragPub Magazine • Audiobooks and Screencasts