hpfp¶
Notes on “Haskell Programming from First Principles” by Julie Moronuki and Chris Allen, revision RC2.
Contents¶
- Readme
- Chapter 1: All You Need is Lambda
- Chapter 1 Overkill
- Chapter 2 Outline
- Chapter 2: Hello, Haskell!
- Chapter 3: Strings
- Chapter 3 Questions
- Chapter 4: Basic datatypes
- Chapter 4 Questions
- Chapter 5: Types
- Chapter 5 Questions
- Chapter 6: Typeclasses
- Chapter 7: More Functional Patterns
- Chapter 8 Outline
- Chapter 8: Recursion
- How to design recursive functions
- Chapter 8: Overkill
- Chapter 9 Outline
- Chapter 9 Summary
- Chapter 9: Lists
- 9.1 Lists
- 9.2 The list datatype
- 9.3 Pattern matching on lists
- 9.4 List’s syntactic sugar
- 9.5 Using ranges to construct lists
- 9.6 Extracting portions of lists
- 9.7 List comprehensions
- 9.8 Spines and nonstrict evaluation
- 9.9 Transforming lists of values
- 9.10 Filtering lists of values
- 9.11 Zipping lists
- 9.12 Chapter Exercises
- Chapter 10 Contents
- Chapter 10: Folding Lists
- Chapter 10 Questions
- Chapter 11: Algebraic Datatypes
- 11.1 Algebraic datatypes
- 11.2 Data declarations review
- 11.3 Data and type constructors
- 11.4 Type constructors and kinds
- 11.5 Data constructors and values
- 11.6 What’s a type and what’s data?
- 11.7 Data constructor arities
- 11.8 What makes these datatypes algebraic?
- 11.9
newtype
- 11.10 Sum types
- 11.11 Product types
- 11.12 Normal form
- 11.3 Constructing and deconstructing values
- 11.14 Function type is exponential
- 11.15 Higher-kinded datatypes
- 11.16 Lists are polymorphic
- 11.17 Binary tree
- 11.18 Chapter exercises
- Chapter 12: Signaling adversity
- Chapter 13: Building Projects
- Chapter 14: Testing
- Chapter 14 Questions
- Chapter 15: Monoid, Semigroup
- 15.1 Monoids and semigroups
- 15.2 What we talk about when we talk about algebras
- 15.3 Monoid
- 15.4 How Monoid is defined in Haskell
- 15.6 What Integer doesn’t have a Monoid
- 15.7 Why bother?
- 15.8 Laws
- 15.9 Different instances, same representation
- 15.10 Reusing algebras by asking for algebras
- 15.11 Madness
- 15.12 Better living through QuickCheck
- 15.13 Semigroup
- 15.14 Strength can be weakness
- 15.15 Chapter exercises
- Chapter 16 Outline
- Chapter 16: Functor
- Chapter 17: Applicative
- Chapter 18 Outline
- Chapter 18: Monad
- Chapter 20 Outline
- Chapter 20: Foldable
- Chapter 21 Outline
- Chapter 21 Questions
- Chapter 21: Traversable
- Chapter 22 Outline
- Chapter 22: Reader