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
Credits
About the Authors
About the Reviewer
www.PacktPub.com
Preface

On Quasar/Pulsar


Pulsar is a Clojure wrapper for the Quasar library, which is an actor-based programming toolkit for the JVM. When using actor libraries, actors usually map one on one to a thread, and therefore may take more resources than necessary to handle the sometimes simple code they need to process.

Quasar and Pulsar introduce the concept of fibers, or really lightweight processing units, which can send messages to each other. This results in a simple to read and use set of processing units that facilitate asynchronous programming to a new level.

Getting ready

A new project.clj file needs to be slightly updated with dependencies. Also note the java-agent directive that adds Quasar core to the set of runtime instrumentation.

Note that the purpose of an agent is to provide instrumentation capabilities to the application, in other words, the capability to redefine the signature of the class files during run-time. The juicy details would need a reading of the Quasar code, but let's just say...