small medium large xlarge

Functional Programming Patterns in Scala and Clojure

March 13, 2013

On this day in 1930, confirmation of the discovery of Pluto was telegraphed to the Harvard College Observatory, officially making Pluto the ninth planet of our solar system. Alas, such fame was fleeting, and in 2006, it was demoted from planet-hood.

Times change, and perhaps you’ve noticed, so has programming. We are awash in changes, including an inexorable move toward the functional programming paradigm. To succeed, you need to know how to use your existing OO and procedural knowledge and embrace new functional techniques as well. And that brings us to our latest title, Functional Programming Patterns in Scala and Clojure: Write Lean Programs for the JVM, now available in beta from

Don’t get Pluto-ed. If you haven’t started to learn functional programming yet, now might be a good time to start.

Functional Programming Patterns in Scala and Clojure: Write Lean Programs for the JVM

Functional languages have their own patterns that enable you to solve problems with less code than object-oriented programming alone. This book introduces you, the experienced Java programmer, to Scala and Clojure: practical, production-quality languages that run on the JVM and interoperate with existing Java. By using both the statically typed, type-inferred Scala and the dynamically typed, modern Lisp Clojure, you’ll gain a broad understanding of functional programming.

For each pattern, you’ll first see the traditional object-oriented solution, and then dig into the functional replacements in both Scala and Clojure. These patterns are common in the functional world and deserve to become part of your problem-solving toolkit. On the object-oriented side, you’ll see many common patterns, such as Command, Strategy, and Null Object. On the functional side, you’ll learn core functional patterns such as Memoization, Lazy Sequence, and Tail Recursion.

Each pattern helps you solve a common programming problem. Working through them gives you a set of patterns you can use to solve problems you come across while writing programs. Finally, you’ll learn how to work your existing Java code into new Scala or Clojure projects. You can start off small, adding functional code little by little, so you can complement your existing knowledge with Scala and Clojure as these languages gain popularity on the JVM.

Now in beta from

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.

Coming Soon:

  • Modern C++ Programming with Test-Driven Development in beta
  • Test iOS Apps with UI Automation
  • The World of Code
  • Rapid Android Development: Build Rich, Sensor-Based Applications with Processing in print
  • Programming Erlang (2nd ed)

Recently Released:

  • Functional Programming in Java [in beta]
  • Practical Programming 2nd Ed. [in beta]
  • Agile Web Development with Rails updated to Rails 4.0 [in beta]
  • Programming Ruby 1.9 & 2.0 [in beta]
  • Thanks for your continued support,

    Dave & Andy

    Books • eBooks • Screencasts • PragPub Magazine