# Programming Language Theory (Temporary Page)

Mort Yao[Wikipedia: Programming language theory]

# 1 Functional Programming

[Wikipedia: Functional programming]

Books:

*How to Design Programs*(**HtDP**) (by Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi) [Homepage] [HTML] [HTML (2nd Ed.)]*Structure and Interpretation of Computer Programs*(**SICP**,**“Wizard Book”**) (by Gerald Jay Sussman, Hal Abelson, Julie Sussman) [Homepage] [HTML] [PDF (Unofficial)]*Introduction to Functional Programming*(by Richard Bird, Philip Wadler) [PDF]*Pearls of Functional Algorithm Design*(by Richard Bird)*Purely Functional Data Structures*(by Chris Okasaki) [PDF]- StackExchange:
*What’s new in purely functional data structures since Okasaki?*[Link]

- StackExchange:

# 2 Programming Paradigms

[Wikipedia: Programming paradigm]

Books:

*Concepts, Techniques, and Models of Computer Programming*(**CTM**,**“Oz Book”**) (by Peter Van Roy, Seif Haridi) [Homepage]

# 3 Programming Languages

Books:

# 4 Abstract Algebra

[Wikipedia: Abstract algebra]

Online resources:

- Wikibooks:
*Abstract Algebra*[HTML]

Books:

*A Book of Abstract Algebra*(by Charles C. Pinter)

## 4.1 Category Theory

[Wikipedia: Category theory]

Books:

*Category Theory for Computing Science*(**CTCS**) (by Michael Barr, Charles Wells) [Homepage] [PDF]*Basic Category Theory for Computer Scientists*(by Benjamin C. Pierce)*Category Theory for Scientists*(by David Spivak) [PDF] [Course Homepage (MIT 18-S996)]*Conceptual Mathematics: A First Introduction to Categories*(by F. William Lawere, Stephen H. Schanuel)*Categories for the Working Mathematician*(by Saunders Mac Lane)

# 5 Mathematical Logic and Foundations of Mathematics

[Wikipedia: Mathematical logic] [Wikipedia: Foundations of mathematics]

Online resources:

- Wikibooks:
*Logic for Computer Scientists*[HTML]

Books:

*The Haskell Road to Logic, Maths and Programming*(**HR**) (by Kees Doets, Jan van Eijck) [Homepage]*Introduction to Logic and to the Methodology of Deductive Sciences*(by Alfred Tarski)*Mathematical Logic*(by Stephen Cole Kleene)*Introduction to Metamathematics*(by Stephen Cole Kleene)*The Foundations of Mathematics*(by Kenneth Kunen)

# 6 Lambda Calculus

[Wikipedia: Lambda calculus]

Books:

*An Introduction to Functional Programming Through Lambda Calculus*(by Greg Michaelson) [PDF]*An Introduction to Lambda Calculi for Computer Scientists*(by Chris Hankin)*Introduction to Lambda Calculus*(by Henk Barendregt, Erik Barendsen) [PDF]*The Lambda Calculus, Its Syntax and Semantics*(by Henk Barendregt)*Lambda Calculus with Types*(by Henk Barendregt, Wil Dekkers, Richard Statman)

# 7 Type Theory

[Wikipedia: Type theory]

Online resources:

*Software Foundations*(**SF**) (by Benjamin C. Pierce, etc.) [HTML]

Books:

*Types and Programming Languages*(**TAPL**) (by Benjamin C. Pierce) [Homepage]*Advanced Topics in Types and Programming Languages*(**ATTAPL**) (by Benjamin C. Pierce) [Homepage]*Practical Foundations for Programming Languages*(**PFPL**) (by Robert Harper) [PDF (Online Preview)] [PDF (Working Draft)] [Course Homepage (CMU 15-814)] [Course Videos (CMU 15-819)]*Type Theory and Functional Programming*(**TTFP**) (by Simon Thompson) [Homepage] [PDF]*Proofs and Types*(**ProT**) (by Jean-Yves Girard, Yves Lafont, Paul Taylor) [Homepage] [PDF]*Implementing Mathematics with The Nuprl Proof Development System*(**“NuPRL Book”**) (by Robert L. Constable, etc.) [Homepage] [HTML] [PS]*Interactive Theorem Proving and Program Development: Coq’Art: The Calculus of Inductive Constructions*(**Coq’Art**) (by Yves Bertot, Pierre Castéran) [Homepage]*Certified Programming with Dependent Types*(**CPDT**) (by Adam Chlipala) [Homepage]*Homotopy Type Theory*(**HoTT**) (by Univalent Foundations of Mathematics) [Homepage] [GitHub]

# 8 Compiler Construction

[Wikipedia: Compiler construction]

Books:

*Language Implementation Patterns: Create Your Own Domain-Specific and General Programming Languages*(by Terence Parr)*Lisp in Small Pieces*(**L.i.S.P**) (by Christian Queinnec) [Homepage]*The Implementation of Functional Programming Languages*(by Simon Peyton Jones) [Homepage] [PDF]*Implementing Functional Languages: A Tutorial*(by Simon Peyton Jones, David Lester) [Homepage] [PDF]*Programming Language Pragmatics*(by Michael L. Scott) [Homepage]*Compilers: Principles, Techniques, and Tools*(**“Dragon Book”**) (by Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman) [Homepage]*Engineering a Compiler*(by Keith Cooper, Linda Torczon)*Modern Compiler Implementation in ML*(**MCIiML**,**“Tiger Book”**) (by Andrew W. Appel) [Homepage]*Compiling with Continuations*(**CwC**) (by Andrew W. Appel)*Program Logics for Certified Compilers*(**PLCC**) (by Andrew W. Appel)

**Complementary Lists**

- https://github.com/steshaw/plt-study - A path to programming language theory enlightenment (by Steven Shaw)
- http://www.cis.upenn.edu/~bcpierce/courses/670Fall04/GreatWorksInPL.shtml - Great works in programming languages (by Benjamin C. Pierce)
- http://www.cs.cmu.edu/~crary/819-f09/ - Classic papers in programming languages and logic (by Karl Crary)
- http://alexott.net/en/fp/books/ - Functional programming books overview (by Alex Ott)
- http://www.cs.uu.nl/wiki/Techno/ProgrammingLanguageTheoryTextsOnline - Programming language theory texts online (by Frank Atanassow)