Skip to content

The Implementation of Functional Programming Languages typeset in LaTeX

Notifications You must be signed in to change notification settings

rljacobson/TIOFPL

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

The Implementation of Functional Programming Languages

The Implementation of Functional Programming Languages by Simon Peyton-Jones is a classic work in the area of functional programming language implementation. Sadly, it is also out of print, and hardcopies of the book are hard to find and are generally very expensive. The author, who is completley unaffiliated with this repository, provides a scanned version of the printed book on his website. (Thank you, Simon!)

The scanned version is certainly nice to have but leaves a lot to be desired in terms of comfort of reading and flexibility. You can't copy and paste, for example. I have OCR'ed the text (see the pages_txt directory) and have typeset about 25% of the book for my own enjoyment. I have experimented with using LLMs to typeset the OCR output, but it's no silver bullet.

It is unlikely that I will typeset the entire book—or even half of it. I have already done the hard part of obsessively reproducing the typography and layout. It would only take a dozen or so people typesetting a chapter each to complete the whole thing, so pull requests are certainly welcome.

Thank you again to Simon and to the many other scholars who have provided me countless hours of pleasure being lost in your books.

Sincerely,

Robert Jacobson

CONTRIBUTING

Progress

  • 1 Introduction
  • Part I Compiling High-Level Functional Languages
    • 2 The Lambda Calculus
    • 3 Translating A High-Level Functional Language
    • Into The Lambda Calculus
    • 4 Structured Types And The Semantics Of Pattern-Matching
    • 5 Efficient Compilation Of Pattern-Matching
    • 6 Transforming The Enriched Lambda Calculus
    • 7 List Comprehensions
    • 8 Polymorphic Type-Checking
    • 9 A Type-Checker
  • Part II Graph Reduction
    • 10 Program Representation
    • 11 Selecting The Next Redex
    • 12 Graph Reduction Of Lambda Expressions
    • 13 Supercombinators And Lambda-Lifting
    • 14 Recursive Supercombinators
    • 15 Fully-Lazy Lambda-Lifting
    • 16 Sk Combinators
    • 17 Storage Management And Garbage Collection
  • Part III Advanced Graph Reduction
    • 18 The G-Machine
    • 19 G-Code - Definition And Implementation
    • 20 Optimizations To The G-Machine
    • 21 Optimizing Generalized Tail Calls
    • 22 Strictness Analysis
    • 23 The Pragmatics Of Graph Reduction
    • 24 Parallel Graph Reduction
  • Appendix An Introduction To Miranda™

About

The Implementation of Functional Programming Languages typeset in LaTeX

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published