Book Image

Clojure Programming Cookbook

Book Image

Clojure Programming Cookbook

Overview of this book

When it comes to learning and using a new language you need an effective guide to be by your side when things get rough. For Clojure developers, these recipes have everything you need to take on everything this language offers. This book is divided into three high impact sections. The first section gives you an introduction to live programming and best practices. We show you how to interact with your connections by manipulating, transforming, and merging collections. You’ll learn how to work with macros, protocols, multi-methods, and transducers. We’ll also teach you how to work with languages such as Java, and Scala. The next section deals with intermediate-level content and enhances your Clojure skills, here we’ll teach you concurrency programming with Clojure for high performance. We will provide you with advanced best practices, tips on Clojure programming, and show you how to work with Clojure while developing applications. In the final section you will learn how to test, deploy and analyze websocket behavior when your app is deployed in the cloud. Finally, we will take you through DevOps. Developing with Clojure has never been easier with these recipes by your side!
Table of Contents (16 chapters)
Clojure Programming Cookbook
About the Authors
About the Reviewer

Transducers for dummies

To be very honest, the first time transducers were presented, like a few other things by Rich Hickey, creator of Clojure, it felt like it was ahead of its time. Just even understanding the concepts was quite a task, never mind using them.

In this recipe, we will slowly look at how to use a transduce call, from the very first baby steps to some more pragmatic examples.

We will also go through the different terms used when dealing with transducers. Finally, we will also see how to apply parallelism to transducers using core.async.

So relax, grab a bit of coffee, and let's get ready.

Getting ready

If you remember the into function, you will remember that it takes all the elements from one collection and puts them in a different collection. You will mostly want to do so because the collection types are different or you want to get a sorted collection.

So, to turn a range-generated sequence into a vector, you would use into:

(into []  
    (range 10)) 
; [0 1 2 3 4...