Skip to main content

Unchecked Exceptions Can Be Strictly More Powerful Than Call/CC


We demonstrate that in the context of statically-typed purely-functional lambda calculi without recursion, unchecked exceptions (e.g., SML exceptions) can be strictly more powerful than call/cc. More precisely, we prove that a natural extension of the simply-typed lambda calculus with unchecked exceptions is strictly more powerful than all known sound extensions of Girard's Fω (a superset of the simply-typed lambda calculus) with call/cc.

This result is established by showing that the first language is Turing complete while the later languages permit only a subset of the recursive functions to be written. We show that our natural extension of the simply-typed lambda calculus with unchecked exceptions is Turing complete by reducing the untyped lambda calculus to it by means of a novel method for simulating recursive types using unchecked-exception–returning functions. The result concerning extensions of Fω with call/cc stems from previous work of the author and Robert Harper.

This is a preview of subscription content, access via your institution.


  1. M. Abadi, L. Cardelli, B. Pierce, and G. Plotkin. Dynamic typing in a statically-typed language. In Proceedings of the Sixteenth Annual ACM Symposium on Principles of Programming Languages, Austin. ACM, January 1989.

  2. K. Arnold and J. Gosling. The Java Programming Language. Addison Wesley, 1996.

  3. L. Cardelli. Typeful programming. Technical Report 45, DEC Systems Research Center, 1989.

  4. L. Damas and R. Milner. Principal type schemes for functional programs. In Ninth ACM Symposium on Principles of Programming Languages, pages 207–212, 1982.

  5. P. de Groote. A simple calculus of exception handling. In M. Dezani and G. Plotkin, editors, Second International Conference on Typed Lambda Calculi and Applications, pages 201–215. Springer-Verlag LNCS 902, 1995.

  6. M. Felleisen. On the expressive power of programming languages. In Science of Computer Programming, volume 17, pages 35–75, 1991.

    Google Scholar 

  7. M. Felleisen and R. Hieb. The revised report on the syntactic theories of sequential control and state. Theoretical Computer Science, 10(2):235–271, 1992.

    Google Scholar 

  8. A. Filinski. Controlling Effects. PhD thesis, Carnegie Mellon University, 1996. Available as Carnegie Mellon University technical report CMU-CS-96-119.

  9. J.-Y. Girard. Interprétation Fonctionnelle et Élimination des Coupures dans l'Arithmétique d'Ordre Supérieure. PhD thesis, Université Paris VII, 1972.

  10. C.A. Gunter, D. Rémy, and J.G. Riecke. A generalization of exceptions and control in ML-like languages. In 1995 Conference on Functional Programming and Computer Architecture, pages 12–23, La Jolla, CA, June 1995.

  11. R. Harper and M. Lillibridge. Polymorphic type assignment and CPS conversion. LISP and Symbolic Computation, 6(4):361–380, November 1993.

    Google Scholar 

  12. R. Harper and M. Lillibridge. Operational interpretations of an extension of F-omega with control operators. Journal of Functional Programming, 6(3):393–418, May 1996.

    Google Scholar 

  13. R. Harper and G. Morrisett. Compiling polymorphism using intensional type analysis. In Twenty-Second ACM Symposium on Principles of Programming Languages, pages 130–141, San Francisco, CA, January 1995.

  14. J.E. Hopcroft and J.D. Ullman. Introduction to Automata Theory, Languages, and Computation. Addison-Wesley, 1979.

  15. R. Kelsey, W. Clinger, and J. Rees, editors. Revised5 report on the algorithmic language Scheme. Higher-Order and Symbolic Computation, 11(3):7–105, 1998. Also appears in ACM SIGPLAN Notices 33 (9), September 1998.

  16. B. Liskov and J. Guttag. Abstraction and Specification in Program Development. MIT Press, 1986.

  17. R. Milner, M. Tofte, and R. Harper. The Definition of Standard ML. MIT Press, 1990.

  18. R. Milner, M. Tofte, R. Harper, and D. MacQueen. The Definition of Standard ML (revised edition). MIT Press, 1997.

  19. J.C. Mitchell and R. Harper. The essence of ML. In Fifteenth ACM Symposium on Principles of Programming Languages, San Diego, California, January 1988.

  20. J.C. Mitchell. Foundations for Programming Languages. MIT Press, 1996.

  21. F. Pfenning and P. Lee. LEAP: A language with eval and polymorphism. In TAPSOFT '89, Proceedings of the International Joint Conference on Theory and Practice in Software Development, Barcelona, Spain, pages 345–359. Springer-Verlag LNCS 352, March 1989.

    Google Scholar 

  22. B. Pierce, S. Dietzen, and S. Michaylov. Programming in higher-order typed lambda-calculi. Technical Report CMU-CS-89-111, Carnegie Mellon University, Pittsburgh, Pennsylvania, March 1989.

    Google Scholar 

  23. G. Plotkin. Call-by-name, call-by-value, and the lambda calculus. Theoretical Computer Science, 1:125–159, 1975.

    Google Scholar 

  24. J. Rehof and M. Heine Sørensen. The λΔ calculus. In Masami Hagiya and John C. Mitchell, editors, Theoretical Aspects of Computer Software, pages 516–542. Springer-Verlag LNCS 789, 1994.

  25. M. Tofte. Type inference for polymorphic references. Information and Computation, 89:1–34, November 1990.

    Google Scholar 

Download references

Author information

Authors and Affiliations


Rights and permissions

Reprints and Permissions

About this article

Cite this article

Lillibridge, M. Unchecked Exceptions Can Be Strictly More Powerful Than Call/CC. Higher-Order and Symbolic Computation 12, 75–104 (1999).

Download citation

  • Issue Date:

  • DOI:

  • studies of programming constructs
  • control primitives
  • exceptions
  • recursion
  • λ-calculus
  • type theory
  • functional programming