Find out how to access previewonly content
Linear ContinuationPassing
 Josh Berdine,
 Peter O'Hearn,
 Uday Reddy,
 Hayo Thielecke
 … show all 4 hide
Rent the article at a discount
Rent now* Final gross prices may vary according to local VAT.
Get AccessAbstract
Continuations can be used to explain a wide variety of control behaviours, including calling/returning (procedures), raising/handling (exceptions), labelled jumping (goto statements), process switching (coroutines), and backtracking. However, continuations are often manipulated in a highly stylised way, and we show that all of these, bar backtracking, in fact use their continuations linearly; this is formalised by taking a target language for CPS transforms that has both intuitionistic and linear function types.
 Abadi, M. and Fiore, M.P. Syntactic considerations on recursive types. In 11th Annual IEEE Symposium on Logic in Computer Science, LICS'96, Proceedings, 1996, pp. 242–252.
 Abramsky, S. and McCusker, G. Callbyvalue games. In Computer Science Logic: 11th International Workshop, CSL'97, Annual Conference of the EACSL. Selected Papers,M. Nielsen and W. Thomas (Eds.). Lecture Notes in Computer Science, Vol. 1414, 1997, pp. 1–17.
 Barber, A. and Plotkin, G. Dual intuitionistic linear logic. Technical Report ECSLFCS96347, University of Edinburgh Laboratory for Foundations of Computer Science, 1997.
 Berdine, J., O'Hearn, P.W., Reddy, U.S., and Thielecke, H. Linearly used continuations. In Proceedings of the Third ACM SIGPLANWorkshop on Continuations (CW'01), A. Sabry (Ed.). Technical Report 545, Computer Science Department, Indiana University, 2001, pp. 47–54.
 Bruggeman, C., Waddell, O., and Dybvig, R.K. Representing control in the presence of oneshot continuations. In Proceedings of the ACMSIGPLAN '96 Conference on Programming Language Design and Implementation, 1996, pp. 99–107.
 Danvy, O. (2000) Formalizing implementation strategies for firstclass continuations. Programming Languages and Systems: 9th European Symposium on Programming, ESOP 2000. SpringerVerlag, Berlin, pp. 88103
 Danvy, O., Dzafic, B., and Pfenning, F. On proving syntactic properties of CPS programs. In Proceedings of HOOTS99, the Third International Workshop on Higher Order Operational Techniques in Semantics, A. Gordon and A. Pitts (Eds.). Electronic Notes in Theoretical Computer Science, Vol. 26, 2000, pp. 19–31.
 Filinski, A. Linear continuations. In Proceedings of the Nineteenth Annual ACM SIGPLANSIGACT Symposium on Principles of Programming Languages, 1992, pp. 27–38.
 Fischer, M.J. (1972) Lambda calculus schemata. Proceedings of an ACM Conference on Proving Assertions about Programs. New York 7: pp. 104109
 Fischer, M.J. (1993) Lambdacalculus schemata. LISP and Symbolic Computation 6: pp. 259288
 Flanagan, C., Sabry, A., Duba, B.F., and Felleisen, M. The essence of compiling with continuations. In Proceedings of the Conference on Programming Language Design and Implementation, 1993, pp. 237–247.
 Friedman, D.P. and Haynes, C.T. Constraining control. In Conference Record of the Twelfth Annual ACM Symposium on Principles of Programming Languages, 1985, pp. 245–254.
 Friedman, D.P., Wand, M., and Haynes, C.T. 1992, Essentials of Programming Languages, 1st edn. The MIT Press/McGrawHill.
 Hasegawa, M. Linearly used effects: Monadic and CPS transformations into the linear lambda calculus. In Proceedings of the 6th International Symposium on Functional and Logic Programming (FLOPS2002). Aizu, Japan, 2002.
 Haynes, C.T. (1987) Logic continuations. Journal of Logic Programming 4: pp. 157176
 Laird, J.D. A Semantic analysis of control. Ph.D. Thesis, University of Edinburgh, 1998.
 Laird, J. A game semantics of linearly used continuations. Personal communication, 2002.
 Moreau, L. and Queinnec, C. Partial continuations as the difference of continuations, A duumvirate of control operators. In International Conference on Programming Language Implementation and Logic Programming (PLILP'94), Proceedings, M. Hermenegildo and J. Penjam (Eds.). Lecture Notes in Computer Science, Vol. 0844, 1994, pp. 182–197.
 Morris, L. The Next 700 programming language descriptions (1970). Later published as [20].
 Morris, L. (1993) The Next 700 programming language descriptions. LISP and Symbolic Computation 6: pp. 249258
 O'Hearn, P.W., Reynolds, J.C. (2000) From algol to polymorphic linear lambdacalculus. Journal of the ACM 47: pp. 167223
 Plotkin, G.D. (1975) Callbyname, Callbyvalue and the ?calculus. Theoretical Computer Science 1: pp. 125159
 Polakow, J. and Pfenning, F. Properties of terms in continuationpassing style in an ordered logical framework. InWorkshop on Logical Frameworks and MetaLanguages (LFM 2000), J. Despeyroux (Ed.). 2000. Available at http://wwwsop.inria.fr/certilab/LFM00/Proceedings/.
 Polakow, J., Yi, K. (2001) Proving syntactic properties of exceptions in an ordered logical framework. Lecture Notes in Computer Science 2024: pp. 6177
 Reynolds, J.C. (1970) GEDANKENA simple typeless language based on the principle of completeness and the reference concept. Communications of the ACM 13: pp. 308319
 Reynolds, J.C. (1972) Definitional interpreters for higherorder programming languages. Proceedings of the ACM Annual Conference, New York 2: pp. 717740
 Reynolds, J.C. (1998) Definitional interpreters for higherorder programming languages. HigherOrder and Symbolic Computation 11: pp. 363397
 Sabry, A. eds. (2001) Proceedings of the Third ACM SIGPLAN Workshop on Continuations (CW'01). Computer Science Department, Indiana University, London, England
 Sabry, A., Felleisen, M. (1993) Reasoning about programs in continuationpassing style. LISP and Symbolic Computation 6: pp. 289360
 Scott, D.S. Outline of a mathematical theory of computation. Technical Monograph PRG2, Programming Research Group, Oxford University Computing Laboratory, 1970.
 Smolka, G. eds. (2000) Programming Languages and Systems: 9th European Symposium on Programming, ESOP 2000. SpringerVerlag, Berlin
 Steele, G.L., Gabriel, R.P. The evolution of LISP.. In: Bergin, T.J., Gibson, R.G. eds. (1996) History of Programming Languages. Addison Wesley, Reading, MA, pp. 233308
 Strachey, C. and Wadsworth, C.P. Continuations: A mathematical semantics for handling full jumps. Technical Monograph PRG11, Programming Research Group, Oxford University Computing Laboratory, 1974 Reprinted as [34].
 Strachey, C., Wadsworth, C.P. (2000) Continuations: A mathematical semantics for handling full jumps. HigherOrder and Symbolic Computation 13: pp. 135152
 Tennent, R.D. Mathematical semantics of SNOBOL4. In Conference Record of the First Annual ACM Symposium on Principles of Programming Languages, 1973, pp. 95–107.
 Thielecke, H. (2002) Comparing control constructs by doublebarrelled CPS. HigherOrder and Symbolic Computation 15: pp. 141160
 Thielecke, H. (1999) Using a continuation twice and its implications for the expressive power of call/cc. HigherOrder and Symbolic Computation 12: pp. 4774
 Thielecke, H. (2000) On exceptions versus continuations in the presence of state. Programming Languages and Systems: 9th European Symposium on Programming, ESOP 2000. SpringerVerlag, Berlin, pp. 397411
 Zdancewic, S., Myers, A.C. (2002) Secure information flow and linear continuations. HigherOrder and Symbolic Computation 15: pp. 209234
 Title
 Linear ContinuationPassing
 Journal

HigherOrder and Symbolic Computation
Volume 15, Issue 23 , pp 181208
 Cover Date
 20020901
 DOI
 10.1023/A:1020891112409
 Print ISSN
 13883690
 Online ISSN
 15730557
 Publisher
 Kluwer Academic Publishers
 Additional Links
 Topics
 Keywords

 continuations
 continuationpassing style
 linear typing
 call/cc
 exceptions
 goto
 coroutines
 Authors

 Josh Berdine ^{(1)}
 Peter O'Hearn ^{(1)}
 Uday Reddy ^{(2)}
 Hayo Thielecke ^{(2)}
 Author Affiliations

 1. Department of Computer Science, Queen Mary, University of London, London, E1 4NS, United Kingdom
 2. School of Computer Science, The University of Birmingham, Birmingham, B15 2TT, United Kingdom