PL asks what a language is independent of any compiler that implements it. A language is a grammar, a set of evaluation rules, and a set of guarantees, and nearly every design argument in the field is about what a language promises versus what it costs to keep that promise.

The clusters below run roughly from surface to depth: how a language is written down, how it runs, what its types rule out, and how implementations make it fast. Concrete-language treatments live in Languages; this section stays at the level of ideas.

Orientation

Grammar and parsing

Lambda calculus

The smallest language that can compute anything, and the substrate most semantics are explained on.

Semantics and evaluation

Binding, state, and control

Type systems

Abstraction and program structure

Implementation


The full file listing follows below, generated automatically by Quartz.

36 items under this folder.