Haskell Design Patterns Author:Ryan Lemmer Take your Haskell and functional programming skills to the next level by exploring new idioms and design patternsAbout This BookExplore Haskell on a higher level through idioms and patternsGet an in-depth look into the three strongholds of Haskell: higher-order functions, the Type system, and Lazy evaluationExpand your understanding of Haskell a... more »nd functional programming, one line of executable code at a timeWho This Book Is ForIf you re a Haskell programmer with a firm grasp of the basics and are ready to move more deeply into modern idiomatic Haskell programming, then this book is for you.What You Will LearnUnderstand the relationship between the Gang of Four OOP Design Patterns and HaskellTry out three ways of Streaming I/O: Imperative, Lazy, and Iteratee-basedExplore the pervasive pattern of composition: from function composition through to high-level composition with LensesGet Synthesize Functor, Applicative, Arrow, and Monad in a single conceptual frameworkFollow the grand arc of fold and map on Lists, all the way to their culmination in Lenses and generic programmingAcquire high-level design patterns for HaskellRetrace the evolution of the Haskell Type system and its implicationsPlace the elements of modern Haskell in a historical frameworkIn DetailDesign patterns and idioms can widen our perspective by showing us where to look, what to look at, and ultimately how to see what we are looking at.At their best, patterns are a shorthand method of communicating better ways to code (writing less, more maintainable, and more efficient code). At their worst, patterns are abstract ideas, seemingly divorced from everyday programming.This book starts with Haskell 98 and, through the lens of patterns and idioms, investigates the key advances and styles of programming that together make modern Haskell. Your journey begins with the three pillars of Haskell higher-order functions, the Type system, and Lazy evaluation. You'll dive into I/O, the problem with Lazy I/O, and a solution in the form of Iteratee-based I/O. You'll then take a look at the hierarchy formed by Functor, Applicative, Arrow, and Monad and see the diverse ways in which these types are composed. You ll see how List, fold, and map are generalized by Foldable and Traversable, which in turn are generalized by functional Lenses. You'll also explore Type and data abstraction more deeply, including RankNTypes, Type Holes, Higher-order kinds, Generalized ADTs, and Datatype Generic Programming.Nearing the end of the book, you'll discover the dark art of asynchronous programming and to finish, you'll investigate higher-level design patterns.« less