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.
 Read tutorials & learn by doing
 Dig into the theory behind
 Learn GHClevel 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.
Dig into the theory behind
 What I wish I knew when learning Haskell
 Theory behind it all (Lambda calculus, System F, logic, etc. – see “course” below)

Dependent types
 For intuition into how type class/ type family/ data kinds/ etc fit together: https://lexilambda.github.io/blog/2021/03/25/anintroductiontotypeclassmetaprogramming/

Agda
 Agda is, in some ways, the most advanced functional programming language in existence, and so if you learn how to program in Agda, you will have a very strong foundation for programming in other languages that use the idioms of functional programming. –Verified Functional Programming in Agda, Aaron Stump
 Idris
Math
TODO
 https://www.cs.uoregon.edu/research/summerschool/summer14/lectures/zdancewicsflec01.pdf
 The book ‘Program = Proof’ seems excellent
 https://github.com/prathyvsh/categorytheoryresources
GHClevel implementation details
 GHC User Guide
 Language manual is a good starting point. 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 donotation.”

 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)
Todo
Where do these fit in?
 Thinking in Types, by isovector
 Category Theory, and other theory
 Functional Programming and Proof Checking Course Plan: https://oxij.org/activity/itmo/fp/plan/
Resources for these?
 MTL
 Lenses
Perspectives,
 Types = Values; https://vitez.me/htslanguage
Create a course
 Find relevant papers, in order.
 Write You A Haskell: Building a modern functional compiler from first principles.
From https://github.com/sdiehl/writeyouahaskell/issues/93#issuecomment962082153
There are two good lists of foundational papers for implementing a Haskell compiler: