Note: This page is in its nascent form with much more content to be added, and then organized.
Roughly there exists three autodidactic approaches to learning the individual Haskell concepts.
- Walkthrough tutorials & learning by doing
- Understand all the entailed concepts
- Learning GHC-level implementation details
Approach (1) is great for “getting started”, but proceeding to (2) and maybe even (3) will give a more foundational perspective, while demystifying otherwise complex ideas. Here, I aim to collect the various resources toward that end.
Understand all the entailed concepts
- GHC User Guide
- What I wish I knew when learning Haskell
- Theory behind it all (Lambda calculus, System F, logic, etc. – see “course” below)
GHC-level implementation details
- Haskell to Core: Understanding Haskell Features Through Their Desugaring
- “Thinking about the way Haskell language constructs are desugared into Core provides a deeper understanding of these features, rather than a superficial familiarity. For example, it provides a clear intuition for existential quantification, GADTs, and do-notation.”
- GHC Core is “System F with Type Equality Coercions“ and “System FC with Explicit Kind Equality“ …. and Haskell is an abstraction over GHC Core. (Ref, on relation of Haskell to typed lambda calculus)
Where do these fit in?
Resources for these?
Create a course
- The book ‘Program = Proof’ seems excellent
There are two good lists of foundational papers for implementing a Haskell compiler: