Practical Haskell : a real world guide to functional programming Part I: First Steps 1. Going Functional 2. Declaring the Data Model 3. Increasing Code Reuse 4. Using Containers and Type Classes 5. Laziness and Infinite Structures Part II: Data Mining 6. Knowing Your Clients Using Monads 7. More Monads: Now for Recommendations 8. Working in Several Cores Part III: Resource Handling 9. Dealing with Files: IO and Conduit 10. Building and Parsing Text 11. Safe Database Access 12. Web Applications Part IV: Domain Specific Languages 13. Strong Types 14. Interpreting Offers with Attributes Part V: Engineering the Store 15. Documenting Testing and Verifying 16. Architecting Your Application 17. Looking Further. Get a practical hands on introduction to the Haskell language its libraries and environment and to the functional programming paradigm that is fast growing in importance in the software industry. This updated edition includes more modern treatment of Haskells web framework and APIs. This book contains excellent coverage of the Haskell ecosystem and supporting tools including Cabal and Stack for managing projects HUnit and QuickCheck for software testing WAI and Elm to develop the back end and front end of web applications Persistent and Esqueleto for database access and parallel and distributed programming libraries. You’ll see how functional programming is gathering momentum allowing you to express yourself in a more concise way reducing boilerplate and increasing the safety of your code. Haskell is an elegant and noise free pure functional language with a long history having a huge number of library contributors and an active community. This makes Haskell the best tool for both learning and applying functional programming and Practical Haskell takes advantage of this to show off the language and what it can do. Free source code available on the Apress GitHub page for this book. You will: Get started programming with Haskell Examine the different parts of the language Gain an overview of the most important libraries and tools in the Haskell ecosystem Apply functional patterns in real world scenarios Understand monads and monad transformers Proficiently use laziness and resource management.