- Essentials of Programming Languages
- Rewritten in Haskell
Chapter 1: Inductive Sets of Data
- Recursively defined data types
-
Environment (representation)
-
Abstract syntax and its representation
Chapter 3: Expressions
-
LET: A expression language with local bindings
-
PROC: A language with procedures (based on LET)
-
LETREC: A language with recursive procedures (based on PROC)
Chapter 4: States
-
EXPLICIT-REFS: A language with explicit references (based on LETREC)
-
IMPLICIT-REFS: A language with implicit references (based on LETREC)
-
LETREC-CPS: Reimplement LETREC with a continuation-based interpreter (based on LETREC)
-
EXCEPTIONS: A language with exception handling (based on LETREC-CPS)
-
THREADS: A multi-threaded concurrent language (based on LETRE-CPS and IMPLICIT-REFS)
- CHECKED: A type-checked language (based on LETREC)
- INFERRED: A language with type inference (based on CHECKED)
- SIMPLE-MODULES: A modular language (based on CHECKED)
- OPAQUE-TYPES: A modular language with interfaces, i.e., module types (based on SIMPLE-MODULES)
- PROC-MODULES: A modular language with parameterized modules (based on OPAQUE-TYPES)
Chapter 9: Objects and Classes
- CLASSES: An untyped object-oriented language (based on IMPLICIT-REFS)
- TYPED-OO: A typed object-oriented language (based on CLASSES)
- Kwanghoon Choi
- Hyeonjin Lee
- Youngwoong Lee