Clojure Data Structures and Algorithms Cookbook

Nonfiction, Computers, Database Management, Programming
Cover of the book Clojure Data Structures and Algorithms Cookbook by Rafik Naccache, Packt Publishing
View on Amazon View on AbeBooks View on Kobo View on B.Depository View on eBay View on Walmart
Author: Rafik Naccache ISBN: 9781785287824
Publisher: Packt Publishing Publication: August 19, 2015
Imprint: Packt Publishing Language: English
Author: Rafik Naccache
ISBN: 9781785287824
Publisher: Packt Publishing
Publication: August 19, 2015
Imprint: Packt Publishing
Language: English

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

In Detail

Data-structures and algorithms often cross your path when you compress files, compile programs, access databases, or simply use your favourite text editor. Understanding and implementing them can be daunting. Curious learners and industrial developers can find these complex, especially if they focus on the detailed implementation of these data structures.

Clojure is a highly pragmatic and expressive language with efficient and easy data manipulation capabilities. As such, it is great for implementing these algorithms. By abstracting away a great share of the unnecessary complexity resulting from implementation, Clojure and its contrib libraries will help you address various algorithmic challenges, making your data exploration both profitable and enjoyable.

Through 25 recipes, you'll explore advanced algorithms and data-structures, well served by a sound Clojure implementation.

This book opens with an exploration of alternative uses of the array data-structure, covering LZ77 compression, drawing fractals using Pascal's triangles, simulating a multi-threaded program execution, and implementing a call-stack winding and un-winding operations.

The book elaborates on linked lists, showing you how to construct doubly linked ones, speed up search times over the elements of such structures, use a linked-list as the foundation of a shift-reduce parser, and implement an immutable linked-list using skew binary numbers representation.

After that, the tree data-structure is explored, focusing on building self-balancing Splay Trees, designing a B-Tree backing-up an efficient key-value data-store, constructing an undo capable Rope, and showing how Tries can make for an auto-completing facility.

Next, some optimization and machine learning techniques are discussed, namely for building a co-occurrence-based recommendation engine, using branch-and-bound to optimize integral cost and profit problems, using Dijkstra's algorithm to determine optimal paths and summarizing texts using the LexRank algorithm.

Particular attention is given to logic programming, you will learn to use this to discover interesting relations between social website data, by designing a simple type inferencer for a mini Java-like language, and by building a simple checkers game engine.

Asynchronous programming will be addressed and you will design a concurrent web-crawler, an interactive HTML5 game, and an online taxi booking platform.

Finally, you'll explore advanced cases for higher order functions in Clojure while implementing a recursive descent parser using efficient mutual resucrsion, devising a mini resusable firewall simulator thanks to Clojure 1.7 new tansducers feature or building a simple unification engine with the help of Continuation Passing Style.

What You Will Learn

  • Explore alternative uses of classical data-structures like arrays and linked-lists
  • Discover advanced types of tree data-structures
  • Explore advanced machine learning and optimization techniques
  • Utilise powerful 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 usage of the library core.logic
  • Master asynchronous programming using the core.async library
  • See the transducers in action while resolving real-world use-cases
View on Amazon View on AbeBooks View on Kobo View on B.Depository View on eBay View on Walmart

25 recipes to deeply understand and implement advanced algorithms in Clojure

About This Book

In Detail

Data-structures and algorithms often cross your path when you compress files, compile programs, access databases, or simply use your favourite text editor. Understanding and implementing them can be daunting. Curious learners and industrial developers can find these complex, especially if they focus on the detailed implementation of these data structures.

Clojure is a highly pragmatic and expressive language with efficient and easy data manipulation capabilities. As such, it is great for implementing these algorithms. By abstracting away a great share of the unnecessary complexity resulting from implementation, Clojure and its contrib libraries will help you address various algorithmic challenges, making your data exploration both profitable and enjoyable.

Through 25 recipes, you'll explore advanced algorithms and data-structures, well served by a sound Clojure implementation.

This book opens with an exploration of alternative uses of the array data-structure, covering LZ77 compression, drawing fractals using Pascal's triangles, simulating a multi-threaded program execution, and implementing a call-stack winding and un-winding operations.

The book elaborates on linked lists, showing you how to construct doubly linked ones, speed up search times over the elements of such structures, use a linked-list as the foundation of a shift-reduce parser, and implement an immutable linked-list using skew binary numbers representation.

After that, the tree data-structure is explored, focusing on building self-balancing Splay Trees, designing a B-Tree backing-up an efficient key-value data-store, constructing an undo capable Rope, and showing how Tries can make for an auto-completing facility.

Next, some optimization and machine learning techniques are discussed, namely for building a co-occurrence-based recommendation engine, using branch-and-bound to optimize integral cost and profit problems, using Dijkstra's algorithm to determine optimal paths and summarizing texts using the LexRank algorithm.

Particular attention is given to logic programming, you will learn to use this to discover interesting relations between social website data, by designing a simple type inferencer for a mini Java-like language, and by building a simple checkers game engine.

Asynchronous programming will be addressed and you will design a concurrent web-crawler, an interactive HTML5 game, and an online taxi booking platform.

Finally, you'll explore advanced cases for higher order functions in Clojure while implementing a recursive descent parser using efficient mutual resucrsion, devising a mini resusable firewall simulator thanks to Clojure 1.7 new tansducers feature or building a simple unification engine with the help of Continuation Passing Style.

What You Will Learn

More books from Packt Publishing

Cover of the book Python 3 Object Oriented Programming by Rafik Naccache
Cover of the book Box2D for Flash Games by Rafik Naccache
Cover of the book Lua Game Development Cookbook by Rafik Naccache
Cover of the book Hands-On Microservices with Kubernetes by Rafik Naccache
Cover of the book Moodle 1.9: The English Teacher's Cookbook by Rafik Naccache
Cover of the book Architecting Modern Java EE Applications by Rafik Naccache
Cover of the book Learning Microsoft Azure by Rafik Naccache
Cover of the book Learning C++ by Creating Games with UE4 by Rafik Naccache
Cover of the book Mastering Clojure by Rafik Naccache
Cover of the book Spring MVC: Designing Real-World Web Applications by Rafik Naccache
Cover of the book Microsoft Forefront Identity Manager 2010 R2 Handbook by Rafik Naccache
Cover of the book Oracle 11g R1/R2 Real Application Clusters Essentials by Rafik Naccache
Cover of the book Raspberry Pi Robotics Essentials by Rafik Naccache
Cover of the book Mastering Hyper-V by Rafik Naccache
Cover of the book Hands-On Data Visualization with Bokeh by Rafik Naccache
We use our own "cookies" and third party cookies to improve services and to see statistical information. By using this website, you agree to our Privacy Policy