In computer science, a continuation is an abstract representation of the control state of a computer program. A continuation implements (reifies) the program control state, i.e. the continuation is a data structure that represents the computational process at a given point in the process's execution; the created data structure can be accessed by the programming language, instead of being hidden in the runtime environment. Continuations are useful for encoding other control mechanisms in programming languages such as exceptions, generators, coroutines, and so on. The "current continuation" or "continuation of the computation step" is the continuation that, from the perspective of running code, would be derived from the current point in a program's execution. The term continuations can also be used to refer to first-class continuations, which are constructs that give a programming language the ability to save the execution state at any point and return to that point at a later point in the program, possibly multiple times. The earliest description of continuations was made by Adriaan van Wijngaarden in September 1964. Wijngaarden spoke at the IFIP Working Conference on Formal Language Description Languages held in Baden bei Wien, Austria. As part of a formulation for an Algol 60 preprocessor, he called for a transformation of proper procedures into continuation-passing style, though he did not use this name, and his intention was to simplify a program and thus make its result more clear. Christopher Strachey, Christopher P. Wadsworth and John C. Reynolds brought the term continuation into prominence in their work in the field of denotational semantics that makes extensive use of continuations to allow sequential programs to be analysed in terms of functional programming semantics. Steve Russell invented the continuation in his second Lisp implementation for the IBM 704, though he did not name it. gives a complete history of the discovery of continuations. First-class continuations are a language's ability to completely control the execution order of instructions.
Anastasia Ailamaki, Georgios Psaropoulos
Daniel Kressner, Axel Elie Joseph Séguin
Lesya Shchutska, Olivier Schneider, Aurelio Bay, Yiming Li, Guido Haefeli, Frédéric Blanc, Christoph Frei, Tatsuya Nakada, Michel De Cian, Luca Pescatore, Elena Graverini, Veronica Sølund Kirsebom, François Fleuret, Matthieu Philippe Luther Marinangeli, Minh Tâm Tran, Pietro Marino, Renato Quagliani, Federico Leo Redi, Federico Betti, Plamen Hristov Hopchev, Maxime Schubiger, Aravindhan Venkateswaran, Violaine Bellée, Luis Miguel Garcia Martin, Maria Vieites Diaz, Vitalii Lisovskyi, Olivier Göran Girard, Preema Rennee Pais, Elisabeth Maria Niel, Pavol Stefko, Jian Wang, Tara Nanut, Mingkui Wang, Maria Elena Stramaglia, Zhirui Xu, Vladimir Macko, Guillaume Max Pietrzyk, Yi Zhang, Lei Zhang, Sebastian Schulte, Surapat Ek-In, Ho Ling Li, Carina Trippl, Mark Tobin, Sara Celani, Serhii Cholak, Niko Neufeld, Ana Bárbara Rodrigues Cavalcante, Matthew Needham, Marc-Olivier Bettler, Maurizio Martinelli, Vladislav Balagura, Donal Patrick Hill, Liang Sun, Mirco Dorigo, Xiaoxue Han, Liupan An, Thibaud Humair, Hang Yin, Guido Andreassi, Yao Zhou, Tommaso Colombo, Evgenii Shmanin, Simone Meloni, Xiaoqing Zhou, Dipanwita Dutta, Zheng Wang, Yi Wang, Hans Dijkstra, Gerhard Raven, Peter Clarke, Frédéric Teubert, Giovanni Carboni, Victor Coco, Adam Davis, Paolo Durante, Wenyu Zhang, Yu Zheng, Anton Petrov, Maxim Borisyak, Feng Jiang, Zhipeng Tang, Xuan Li, Alexey Boldyrev, Almagul Kondybayeva, Hossein Afsharnia