There are many books about scala, some are both advanced and incomprehensible to most, some are not only simple and introductory, but there is currently only one book which managed to touch the sweet spot of a balance between presenting advanced topics and being comprehensible. This book is Scala Design Patterns by Ivan Nikolov.
I don’t read it because of the design patterns!
I mean you can read this book in two ways. First way as a standard scala design patterns book. But the way I read it, is as a book written by an excellent writer who knows to explain himself, excellently, and as he want’s to describe the design patterns in scala language, he describes scala concepts, and he manages to do it much better than every book i have seen so far!
What the book covers
So what does the book cover, or what did I learn from it? many things I found hard to grasp by other books! here is the list:
- Mixin composition - Will guide you on how to compose functionality
- Multiple inheritance and scala - Will show you how scala solves or get’s around the multiple inheritance problem
- Linearization - The linearization process is the process by which scala get’s around the multiple inheritance problem, here is a clear explanation of it!
- Testing traits - Best practices for testing traits the scala way
- Traits vs classes - When do you prefer classes to traits and vice versa how to properly combine them
- Implicits - Advanced usage of implicits - again clear and great explanations
- Algebric data types and class hierarchies - An excellent explanation of ADT
- Polymorphiosm and scala - The way scala views polymorophism pitfalls and how to utilize it
- Self types and when to use - What is a self type how to use, again excellent description with real world examples
- On modules and objects
- Stackable traits
- Lazy evaluation
- Partial functions
- Implicit injection
- Duck typing
Do you see the book is just amazing, and he does an excellent job describing these topics not as other books!
Scala Design Patterns by John Hunt is my favorite book to learn scala and functional programmning in scala!