Beginning Haskell [electronic resource] : A Project-Based Approach /
Serrano Mena, Alejandro.author.
Beginning Haskell provides a broad-based 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. The book takes a project-based approach to learning the language that is unified around the building of a web-based storefront. Excellent coverage is given to the Haskell ecosystem and supporting tools. These include the Cabal build tool for managing projects and modules, the HUnit and QuickCheck tools for software testing, the Scotty framework for developing web applications, Persistent and Esqueleto for database access, and also parallel and distributed programming libraries. Functional programming is gathering momentum, allowing programmers to express themselves in a more concise way, reducing boilerplate and increasing the safety of code. Indeed, mainstream languages such as C# and Java are adopting features from functional programming, and from languages implementing that paradigm. 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 Beginning Haskell the perfect book to show off the language and what it can do. Takes you through a series of projects showing the different parts of the language. Provides an overview of the most important libraries and tools in the Haskell ecosystem. Teaches you how to apply functional patterns in real-world scenarios.
Contents at a Glance; Contents; About the Author; About the Technical Reviewer; Acknowledgments; Introduction; Part 1: First Steps; Chapter 1: Going Functional; Why Haskell?; Why Pure Functional Programming?; Why Strong Static Typing?; The Haskell Ecosystem; The History of Haskell; Your Working Environment; Installing on Windows; Installing on Mac OS X; Installing on Linux; Installing on Linux from Source; Checking That the Installation is Successful; Installing EclipseFP; First steps with GHCi; The Time Machine Store; Summary; Chapter 2: Declaring the Data Model
Working with Characters, Numbers, and ListsCharacters; Numbers; Strings; Lists; Lists Operations; Creating a New Project; Creating a Project from the Command Line; Creating a Project from EclipseFP; Understanding Modules; Defining Simple Functions; Creating a Simple Function; Specifying the Function's Type; Developing a Robust Example; Returning More than One Value; Working with Data Types; Pattern Matching; Simple Patterns; Lists and Tuples; Guards; View Patterns; Records; Creation and Use; The "Default Values" Idiom; Summary; Chapter 3: Reusing Code Through Lists; Parametric Polymorphism
Functions as ParametersHigher-Order Functions; Anonymous Functions; Partial Application of a Function; More on Modules; Module Imports; Smart Constructors and Views; Diving into Lists; Folds; Lists and Predicates; Lists Containing Tuples; List Comprehensions; Haskell Origami; Summary; Chapter 4: Using Containers and Type Classes; Using Packages; Managing Packages with Cabal and EclipseFP; Sandboxed Environments; Containers: Maps, Sets, Trees, Graphs; Maps; Sets; Trees; Graphs; Obtaining Help; Ad-hoc Polymorphism: Type Classes; Declaring Classes and Instances; Built-in Type Classes
Binary Tress for the Minimum PriceStep 1: Simple Binary Trees; Step 2: Polymorphic Binary Trees; Step 3: Binary Trees with Monoidal Cache; Container-related Type Classes; Functors; Foldables; Summary; Chapter 5: Laziness and Infinite Structures; An Infinite Number of Time Machines; Lazy Evaluation Model; Understanding Evaluation in Haskell; Problems with Laziness; Pattern Matching and Laziness; Profiling with GHC; Strictness Annotations; Summary; Part 2: Data Mining; Chapter 6: Knowing Your Clients Using Monads; Data Mining; Implementing K-means; Lenses; Discovering Monads
Watching out for Incomplete DataCombinators for State; Dissecting the Combinators; do Notation; Monad Laws; Different Sorts of State; State and Lenses; Reader, Writer, and RWS; Mutable References with ST; Summary; Chapter 7: More Monads: Now for Recommendations; Returning More Than One Value; The List Monad; A New View Over Monads; Failures and Alternatives; Association Rules Learning.; Flattening Values into Transactions; The Apriori Algorithm; Search Problems; Paths in a Graph; The Logic Monad; Monads and Lists Redux; Combining Values Under a Monad; Monad Comprehensions; Combining Monads
Monad Transformers
Includes index.
Beginning Haskell provides a broad-based 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. The book takes a project-based approach to learning the language that is unified around the building of a web-based storefront. Excellent coverage is given to the Haskell ecosystem and supporting tools. These include the Cabal build tool for managing projects and modules, the HUnit and QuickCheck tools for software testing, the Scotty framework for developing web applications, Persistent and Esqueleto for database access, and also parallel and distributed programming libraries. Functional programming is gathering momentum, allowing programmers to express themselves in a more concise way, reducing boilerplate and increasing the safety of code. Indeed, mainstream languages such as C# and Java are adopting features from functional programming, and from languages implementing that paradigm. 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 Beginning Haskell the perfect book to show off the language and what it can do. Takes you through a series of projects showing the different parts of the language. Provides an overview of the most important libraries and tools in the Haskell ecosystem. Teaches you how to apply functional patterns in real-world scenarios.
Programming languages (Electronic computers).
Computer programming.
Programming Languages, Compilers, Interpreters.
Programming Techniques.