Skip to content

Papers to Read

Jeffrey M. Young edited this page Mar 4, 2020 · 43 revisions

This page collects papers that we may want to read in future reading groups.

Links to external lists:

Conferences to check:

  • ICFP
  • PLDI
  • POPL
  • OOPLSA
  • GPCE

Specific Papers mentioned in Reading Group

Let's see how well you really understand folds:

  • Bananas and Lenses
    • Reason: This paper is a classic FP paper and lays the foundation for much of the lens library and Foldable, Traversable type classes in haskell
  • Third Homomorphism Theorem
    • Reason: A pre-requisite for bananas-lenses this paper describes a theorem that allows you to know when you have a monoid. Again, very important for folds.
  • Third Homomorphism Thoerem For Trees
    • Reason: This paper describes the third homomorphism theorem for trees and even relates that to Zippers! Speaking of which...

Monads

  • Free/Freer monad (Oleg has a paper but we might need some simpler background first)
    • Reason: Understand the free monad design pattern for DSLs, get insight into the relationships between monads, monad transformers, effects, etc.

Old FP Papers:

Type Level Programming

Dependent Type Theory Papers

Generic Programming

Type Theory Papers

Domain Specific Languages

Category Theory

Other Papers

  • "Differential Symbolic Execution" by Suzette Person, Matthew B. Dwyer, Sebastian G. Elbaum, and Corina S. Pasareanu
  • Theorems For Free
  • Theorems For Free For Free
  • Zippers
    • Reason: Another classic, should be mandatory reading. This paper describes a functional structure known as a zipper that allows one to move up, down left or right in a tree elegantly and efficiently. Zippers also form the basic tree structure used in the programming language Clojure.
  • The Marriage of Effects and Monads
    • Reason: This paper is the paper that relates Monads to Effects where they were previously separate lines of research.
  • Hoare's hints on programming language design
    • Reason: Hoare's always a good read, and this paper details, comments on, and recommends solutions to many problems we still deal with today in PL design.
  • Notation as a Tool of Thought
    • Reason: Seems interesting and is a Turing award speech, although rather long this could fit for a reprieve from more technically minded papers.
  • Trouble Shared is Trouble Halved
    • Reason: A functional pearl that describes a tree with shared nodes called a nexus. This sounds a lot like a Tag tree with explicit sharing and without dimensions.
  • Deriving Via
    • It's on GHC's new "deriving via" feature, which is a super elegant solution to making Haskell's type class deriving mechanism extensible, without requiring anything yucky like Template Haskell or generic programming.
  • Type Safe Observable Sharing in Haskell
  • Ghosts of Departed Proofs
  • Incorrectness Logic
    • We typically design type systems around what is correct....but what if we designed around what is incorrect?

Must Reads

Clone this wiki locally