A List of Foundational Haskell Papers
The Beginning: The Eugenio Moggi Papers
- Notions of Computations over Monads
- Computational Lambda Calculus and Monads
- Monads for functional programming
- The essence of functional programming
Propositions as Types
Haskell Semantics and Design Spaces
- Semantics
- How to make ad hoc polymorphism less ad hoc
- Type Classes
- Lazy State Threads
- General State
- The Spineless Tagless G-machine
- An Exploration of the Design space of Type Classes
- Functional Dependencies
- Rank-n Types
- Typing Haskell in Haskell
- Type Families
- Type Families pt. 2
- GADTs
- First Class Modules in Haskell
- Kind Promotion
- Stream Fusion. From Lists to Streams to Nothing at All
Type Systems
- Lambda Calculus with Types
- The Call by Need Lambda Calculus
- The Lazy Lambda Calculus
- Hindley-Milner Systems
- Generalized Hindley-Milner Systems
- System F with type equality coercion
- System FC with Kind Equality
Misc Parametricity
- Theorems for Free
- Free theorems for TyCons
- Parametric Polymorphism
- Type Derivatives and Typed Holes
- Suggesting Valid Hole Fits
Misc TypeChecking + PLT
- Parametric HOAS
- Tutorial on Bidirectional Type Inference
- Tutorial Implementation of Dependent Types
- Pfenning's Notes on Bidirectional Type Inference
- EdK's
bound
Library Comparisons - Bidirectional Typechecking for Higher Rank Polymorphism
- Tutorial Implementation of Hindley-Milner
- De Bruijn Indices
- The Stitch Type Checker
- Boxes go Bananas
Functional pearls
- The countdown problem
- A program to solve Sudoku
- Calculating correct compilers
- Data types a la carte
- Trees that grow
- I am not a Number, I am a Free Variable!
- Notions of Computation as Monoids - Exequiel Rivas, Mauro Jaskelioff