Skip to content

Instantly share code, notes, and snippets.

@shhyou
Created June 14, 2013 14:38
Show Gist options
  • Save shhyou/5782353 to your computer and use it in GitHub Desktop.
Save shhyou/5782353 to your computer and use it in GitHub Desktop.
Essentials of Programming Langauges 1e
Essentials of Programming Langauges 1e
Daniel P. Friedman, Mitchell Wand, and Christopher T. Haynes
Chapter 1 Tools for Symbolic Programming
1.1 Simple Expressions
1.2 Data Types
1.3 Procedures
1.4 Summary
Chapter 2 Induction, Recursion, and Scope
2.1 Inductively Specified Data
2.2 Recursively Specified Programs
2.3 Static Properties of Variables
2.4 Summary
Chapter 3 Syntactic Abstraction and Data Abstraction
3.1 Local Binding
3.2 Logical Connectives
3.3 Branching
3.4 Records
3.5 Data Abstraction
3.6 From Procedural to Data Structure Representations
3.7 Summary
Chapter 4 Reduction Rules and Imperative Programming
4.1 Reasoning about Procedures
4.2 The Lambda Caluclus and \beta-Conversion
4.3 Reduction Strategies
4.4 Defining Recursive Procedures in the Lambda Calculus
4.5 Sequencing and Imperative Programming
4.6 Variable Assignment and Sharing
4.7 Streams
4.8 Summary
Chapter 5 Interpreters
5.1 A Simple INterpreter
5.2 Conditional Evaluation
5.3 Local Binding
5.4 Procedures
5.5 Variable Assignment
5.6 Recursion
5.7 Dynamic Scope and Dynamic Assignment
5.8 Summary
Chapter 6 Parameter Passing
6.1 Adding Arrays
6.2 Call-by-Reference
6.3 Call-by-Value-Result and Call-by-Result
6.4 Expressed or Denoted Values?
6.5 Call-by-Name and Call-by-Need
6.6 OPtional and Keyword Arguments
6.7 Summary
Chapter 7 Object-Oriented Languages
7.1 Objects and Classes
7.2 Inheritance
7.3 Meta-Classes
7.4 Summary
Chapter 8 Continuation-Passing Style
8.1 Iterative Control Behavior and Proper Tail Recursion
8.2 Introduction to Continuatino-Passing Style
8.3 Tail Form
8.4 Converting to Continuation-Passing Style
8.5 Examples of the CPS Transformation
8.6 Implementing the CPS Transformation
8.7 Call Chains
8.8 Summary
Chapter 9 Continuation-Passing Interpreters
9.1 Data Structure Representations of Continuations
9.2 The Continuation Interpreter
9.3 Making Continuations Available to the Programmer
9.4 Upward Continuations and Coroutings
9.5 Leaving and Entering Control Contexts
9.6 Dynamic Assignment Revisited
9.7 Summary
Chapter 10 Imperative Form and Stack Architecture
10.1 Imperative Form
10.2 Control Stacks
10.3 Interpreter Stack Architecture
10.4 Stack Allocation of Continuations and Environments
10.5 Summary
Chapter 11 Scanners and Parsers
11.1 Lexical Scanning Using Finite Automata
11.2 Simulating a Scanning Automaton
11.3 Constructing a Predictive Parser
11.4 Recursive Descent Parsers
11.5 Table-Drive Parsers
11.6 Summary
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment