Call-by-Push-Value: A Subsuming Paradigm
Call-by-push-value is a new paradigm that subsumes the call-by-name and call-by-value paradigms, in the following sense: both operational and denotational semantics for those paradigms can be seen as arising, via translations that we will provide, from similar semantics for call-by-observable.
To explain call-by-observable, we first discuss general operational ideas, especially the distinction between values and computations, using the principle that “a value is, a computation does”. Using an example program, we see that the lambda-calculus primitives can be understood as push/pop commands for an operand-stack.
We provide operational and denotational semantics for a range of computational effects and show their agreement. We hence obtain semantics for call-by-name and call-by-value, of which some are familiar, some are new and some were known but previously appeared mysterious.
KeywordsOperational Semantic Basic Language Denotational Semantic Type Constructor Game Semantic
Unable to display preview. Download preview PDF.
- AHM98.S. Abramsky, K. Honda, and G. McCusker. A fully abstract game semantics for general references. Proceedings, Thirteenth Annual IEEE Symposium on Logic in Computer Science, IEEE Computer Society Press, 1998.Google Scholar
- AM98.S. Abramsky and G. McCusker. Call-by-value games. In M. Nielsen and W. Thomas, editors, Computer Science Logic: 11th International Workshop Proceedings, Lecture Notes in Computer Science. Springer-Verlag, 1998.Google Scholar
- BW96.N. Benton and P. Wadler. Linear logic, monads and the lambda calculus. In Proceedings, 11 th Annual IEEE Symposium on Logic in Computer Science, pages 420–431, New Brunswick, 1996. IEEE Computer Society Press.Google Scholar
- Fil96.A. Filinski. Controlling Effects. PhD thesis, School of Computer Science, Carnegie Mellon University, Pittsburgh, Pennsylvania, 1996.Google Scholar
- Gir87.J.-Y. Girard. Linear logic. Theoretical Computer Science, 50:1–102, 1987.Google Scholar
- HO94.M. Hyland and L. Ong. On full abstraction for PCF. submitted, 1994.Google Scholar
- JLST98.S. Peyton Jones, J. Launchbury, M. Shields, and A. Tolmach. Bridging the gulf: A common intermediate language for ML and Haskell. In Proc. 25th ACM Symposium on Principles of Programming Languages, San Diego, 1998.Google Scholar
- Lev98.P. B. Levy. Categorical aspects of call-by-push-value. draft, available at http://www.dcs.qmw.ac.uk/pbl/papers.html, 1998.
- Mar98.M. Marz. A fully abstract model for sequential computation. draft, 1998.Google Scholar
- MC88.A. Meyer and S. Cosmodakis. Semantical Paradigms. In Proc. Third Annual Symposium on Logic in Computer Science. Computer Society Press, 1988.Google Scholar
- McC96.G. McCusker. Games and Full Abstraction for a Functional Metalanguage with Recursive Types. PhD thesis, University of London, 1996.Google Scholar
- O’H93.P. W. O’Hearn. Opaque types in algol-like languages. manuscript, 1993.Google Scholar
- Plo77.G. D. Plotkin. LCF as a programming language. Theoretical Computer Science, 5, 1977.Google Scholar
- Plo85.G. D. Plotkin. Lectures on predomains and partial functions. Course notes, Center for the Study of Language and Information, Stanford, 1985.Google Scholar
- Rey98.J. Reynolds. Where theory and practice meet: POPL past and future. Invited Lecture, 25th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, San Diego, California, January 19—21, 1998.Google Scholar
- SJ98.M. Shields and S. Peyton Jones. Bridging the gulf better. Draft, 1998.Google Scholar
- SR96.Th. Streicher and B. Reus. Continuation semantics, abstract machines and control operators. submitted to Journal of Functional Programming, 1996.Google Scholar