Approved by: (1995)
Abstract:
A fundamental activity in programming language design is the association of a name to a syntactic phrase. This is called a definition binding, since the name defines the syntactic phrase. Bindings can also arise as a consequence of parameter transmission, via the association of a formal parameter name to an actual parameter, and are termed parameter bindings. Bindings can be understood in many different ways: we study two popular semantics of bindings, namely, eager (or call-by-value) semantics and lazy (or call-by-name) semantics. We validate Landin's correspondence principle, a benchmark of programming language design, by developing a categorical model for a higher-order, modular language. The model provides a uniform semantics of definition and parameter bindings. If the language satisfies the correspondence principle, the categorical model is a weakly symmetric, monoidal-closed category. This allows the understanding of definitions as records, their invocation as record indexing, and parameterized definitions as-abstractions. Applications of the framework to
Citations
| 588 | Compiling with Continuations – Appel - 1992 |
| 182 | Abstract and Concrete Categories – Adámek, Herrlich, et al. - 1990 |
| 129 | Abstract interpretation of declarative languages – Abramsky, Hankin - 1987 |
| 66 | Runtime Tags Aren’t Necessary – Appel - 1988 |
| 36 | Unify and Conquer (Garbage, Updating, Aliasing, ...) in Functional Languages – BAKER - 1990 |
| 28 | An empirical and analytic study of stack vs. heap cost for languages with closures – Appel, Shao - 1994 |
| 5 | A categorical interpretation of Landin's correspondence principle – Banerjee, Schmidt - 1993 |
| 1 | A Programming-Language Workbench – Banerjee, Danvy, et al. - 1991 |
| 1 | Stackability in the Simply-Typed, Call-byValue Lambda Calculus – Banerjee, Schmidt - 1994 |

