Haskell is a purely functional language that has the great ability to develop large and difficult, but easily maintainable software. Haskell Cookbook provides recipes that start by illustrating the principles of functional programming in Haskell, and then gradually build up your expertise in creating industrial-strength programs to accomplish any goal. The book covers topics such as Functors, Applicatives, Monads, and Transformers. You will learn various ways to handle state in your application and explore advanced topics such as Generalized Algebraic Data Types, higher kind types, existential types, and type families. The book will discuss the association of lenses with type classes such as Functor, Foldable, and Traversable to help you manage deep data structures. With the help of the wide selection of examples in this book, you will be able to upgrade your Haskell programming skills and develop scalable software idiomatically. Yogesh Sajanikar has received his bachelor's degree in Mechanical Engineering from Shivaji University, India, along with a gold medal and a master's degree in Production Engineering from the Indian Institute of Technology, Bombay, India. Yogesh has an experience of more than 20 years, and he has extensively worked with Product Lifecycle Management (PLM) and Computer Aided Design (CAD) software development firms, and architected solutions for domains such as Construction and Shipping Domain. Having hooked on to functional programming, he moved into the Finance domain and worked as an enterprise architect; he has also worked with Scala/F# and Haskell. Currently, he is working as a CTO for a startup. He has also started local Haskell meetups and has been an active participant in meetups and functional conferences. Yogesh believes in the open source movement, and believes in giving back to the open source community.
The book is definitely worth a read if you are among those who have the basics down, but are struggling with more intermediate stuff such as monads in general, monad transformers, or just wish to start getting your feet wet with some of the most used GHC extensions (RankNTypes, GADTs, etc.).
It also has a couple of chapters on quite specific use cases, in particular Chapters 7, 8, and 9 which deal with relational and NoSQL databases, HTML and templates, and the Snap Framework. These can either be very useful if you happen to be needing any of the stuff discussed, or mostly noise if you don't. On the bright side, it's good to know one has a reference to refer to in case any of that is needed.
Unfortunately, the book lacks on the editing department, as there is broken English in more than a few sentences (mainly articles missing), and several code samples are not properly indented. I would decrease the font size of the code snippets a bit and indent them less, so that lines with comments don't need to wrap so often, which many times leads to hard to read code.
The cookbook format also has its pros and cons. If you have some idea about what's being presented, it can be a good quick reference; otherwise, some of the presentations feel lacking in explanations, such as the ST Monad 'recipe', or why StandaloneDeriving is necessary when using ExistentialQuantification. It's also quite repetitive (or verbose) at times, mainly with the 'recipe' boilerplate.
I'd overall recommend it, specially considering the lack of books covering some of the same material, but I think that with a couple of changes it could be four stars.