A categorical understanding of environment machines
- 1 January 1992
- journal article
- research article
- Published by Cambridge University Press (CUP) in Journal of Functional Programming
- Vol. 2 (1) , 23-59
- https://doi.org/10.1017/s0956796800000253
Abstract
In the last two decades, category theory has become one of the main tools for the denotational investigation of programming languages. Taking advantage of the algebraic nature of the categorical semantics, and of the rewriting systems it suggests, it is possible to use these denotational descriptions as a base for research into more operational aspects of programming languages.This approach proves to be particularly interesting in the study and the definition of environment machines for functional languages. The reason is that category theory offers a simple and uniform language for handling terms and environments (substitutions), and for studying their interaction (through application).Several examples of known machines are discussed, among which the Categorical Abstract Machine of Cousineau et al. (1987) and Krivine's machine. Moreover, as an example of the power and fruitfulness of this approach, we define two original categorical machines. The first one is a variant of the CAM implementing a λ-calculus with both call-by-value and call-by-name as parameters passing modes. The second one is a variant of Krivine's machine performing complete reduction of λ-terms.Keywords
This publication has 9 references indexed in Scilit:
- Lambda calculus extended with segmentsPublished by Elsevier ,1994
- Confluence results for the pure strong categorical logic CCL. λ-calculi as subsystems of CCLTheoretical Computer Science, 1989
- Partiality, cartesian closedness, and toposesInformation and Computation, 1989
- Categories of partial mapsInformation and Computation, 1988
- The categorical abstract machineScience of Computer Programming, 1987
- Linear logicTheoretical Computer Science, 1987
- Proof of termination of the rewriting system subst on CCLTheoretical Computer Science, 1986
- Adjunction of semifunctors: Categorical structures in nonextensional lambda calculusTheoretical Computer Science, 1985
- Call-by-name, call-by-value and the λ-calculusTheoretical Computer Science, 1975