Call-by-Push-Value: A Subsuming Paradigm

  • Paul Blain Levy
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1581)


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.


Operational Semantic Basic Language Denotational Semantic Type Constructor Game Semantic 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 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
  2. 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
  3. 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
  4. Fil96.
    A. Filinski. Controlling Effects. PhD thesis, School of Computer Science, Carnegie Mellon University, Pittsburgh, Pennsylvania, 1996.Google Scholar
  5. Gir87.
    J.-Y. Girard. Linear logic. Theoretical Computer Science, 50:1–102, 1987.Google Scholar
  6. HD97.
    J. Hatcliff and O. Danvy. Thunks and the λ-calculus. Journal of Functional Programming, 7(3):303–319, May 1997.zbMATHCrossRefMathSciNetGoogle Scholar
  7. HO94.
    M. Hyland and L. Ong. On full abstraction for PCF. submitted, 1994.Google Scholar
  8. 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
  9. Jon92.
    S. L. Peyton Jones. Implementing lazy functional languages on stock hardware: the spineless tagless G-machine. Journal of Functional Programming, 2(2):127–202, July 1992.CrossRefzbMATHGoogle Scholar
  10. Lev98.
    P. B. Levy. Categorical aspects of call-by-push-value. draft, available at, 1998.
  11. Mar98.
    M. Marz. A fully abstract model for sequential computation. draft, 1998.Google Scholar
  12. MC88.
    A. Meyer and S. Cosmodakis. Semantical Paradigms. In Proc. Third Annual Symposium on Logic in Computer Science. Computer Society Press, 1988.Google Scholar
  13. McC96.
    G. McCusker. Games and Full Abstraction for a Functional Metalanguage with Recursive Types. PhD thesis, University of London, 1996.Google Scholar
  14. Mog91.
    E. Moggi. Notions of computation and monads. Information and Computation, 93:55–92, 1991.zbMATHCrossRefMathSciNetGoogle Scholar
  15. O’H93.
    P. W. O’Hearn. Opaque types in algol-like languages. manuscript, 1993.Google Scholar
  16. Plo76.
    G. D. Plotkin. Call-by-name, call-by-value and the λ-calculus. Theoretical Computer Science, 1(1):125–159, 1976.MathSciNetGoogle Scholar
  17. Plo77.
    G. D. Plotkin. LCF as a programming language. Theoretical Computer Science, 5, 1977.Google Scholar
  18. Plo85.
    G. D. Plotkin. Lectures on predomains and partial functions. Course notes, Center for the Study of Language and Information, Stanford, 1985.Google Scholar
  19. PR97.
    A. J. Power and E. P. Robinson. Premonoidal categories and notions of computation. Math. Struct. in Comp. Sci., 7(5):453–468, October 1997.zbMATHCrossRefMathSciNetGoogle Scholar
  20. 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
  21. SJ98.
    M. Shields and S. Peyton Jones. Bridging the gulf better. Draft, 1998.Google Scholar
  22. SR96.
    Th. Streicher and B. Reus. Continuation semantics, abstract machines and control operators. submitted to Journal of Functional Programming, 1996.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1999

Authors and Affiliations

  • Paul Blain Levy
    • 1
  1. 1.Department of Computer ScienceQueen Mary and Westfield CollegeLondonUK

Personalised recommendations