Skip to content

Papers to Read

Ghadeer Alkubais edited this page Jan 8, 2019 · 43 revisions

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

Links to external lists:

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.

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.

Dependent Type Theory

Clone this wiki locally