Who this book is for
The book assumes some familiarity with basic data structures. You should have played with fundamental data structures like linked lists, heaps, and binary trees. It also assumes that you have written some code in a functional language.
Scala is used as an implementation language. We do highlight related Clojure features too. The idea is to illustrate the basic design principles.
We explain the language concepts as needed. However, we just explain the basics and give helpful pointers, so you can learn more by reading the reference links.
We try to site links that offer hands-on code snippets, so you can practice them yourself.
Walking through an algorithm and discussing the implementation line by line is an effective aid to understanding.
A lot of thought has gone into making helpful diagrams. Quizzes and exercises are included, so you can apply what you've learned.
All the code is available online. We strongly advocate keying in the code snippets though, to internalize the principles and techniques.
Welcome to the wonderland of functional data structures and algorithms!