Beginning Haskell A Project-Based Approach

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 aroun...

Descripción completa

Detalles Bibliográficos
Autor principal: Serrano Mena, Alejandro. author (author)
Formato: Libro electrónico
Idioma:Inglés
Publicado: Berkeley, CA : Apress 2014.
Edición:1st ed. 2014.
Colección:Expert's voice in programming.
Materias:
Ver en Biblioteca Universitat Ramon Llull:https://discovery.url.edu/permalink/34CSUC_URL/1im36ta/alma991009629528006719
Tabla de Contenidos:
  • 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