25 recipes to deeply understand and implement advanced algorithms in Clojure
About This Book
- Explore various advanced algorithms and learn how they are used to address many real-world computing challenges
- Construct elegant solutions using impressive techniques including zippers, parsing, and pattern matching
- Solve complex problems by adopting innovative approaches such as logic or asynchronous programming
Who This Book Is For
This book is for intermediate Clojure developers who can read and write in this language quite comfortably. Besides, it is assumed that you have some knowledge of how to set up Clojure projects, include dependencies, how to run REPLs, and so on through Leiningen and Figwheel. No prior awareness of any of the algorithms covered in this book is needed, and, when appropriate, pointers are given to the explanation material about any theory related to them.
What You Will Learn
- Explore alternative uses of classical data structures such as arrays and linked lists
- Explore advanced machine learning and optimization techniques
- Utilize the Clojure libraries, such as Instaparse for parsing, core.match for pattern matching, clojure.zip for zippers, and clojure.matrix for matrix operations
- Learn logic programming through the core.logic library
- Master asynchronous programming using the core.async library
- Observe transducers while resolving real-world use cases
Clojure is a highly pragmatic language with efficient and easy data manipulation capabilities. This provides us with an opportunity to easily explore many challenging and varied algorithmic topics, while using some extremely creative methods.
In this book, we'll discover alternative uses for classical data structures (arrays, linked lists, and trees), cover some machine learning and optimization techniques, and even delve into some innovative ways of approaching algorithmic problem solving, such as logic programming, asynchronous programming or the usage of advanced functional constructs, namely transducers or the continuation passing style.
Table of Contents
Chapter 1: Revisiting Arrays
Chapter 2: Alternative Linked Lists
Chapter 3: Walking Down Forests of Data
Chapter 4: Making Decisions with the Help of Science
Chapter 5: Programming with Logic
Chapter 6: Sharing by Communicating
Chapter 7: Transformations as First-class Citizens