Clojure Data Structures and Algorithms Cookbook

Rafik Naccache

下單後立即進貨 (約1~2週)



25 recipes to deeply understand and implement advanced algorithms in Clojure

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, 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

In Detail

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.