Mediaspace scheduled maintenance: Aug 25, 2026 07:00 - 12:00 AM. During this time, videos will be temporarily unavailable. Check status updates.
In programming languages, a delimited continuation, composable continuation or partial continuation, is a "slice" of a continuation frame that has been reified into a function. Unlike regular continuations, delimited continuations return a value, and thus may be reused and composed. Control delimiters, the basis of delimited continuations, were introduced by Matthias Felleisen in 1988 though early allusions to composable and delimited continuations can be found in Carolyn Talcott's Stanford 1984 dissertation, Felleisen et al., Felleisen's 1987 dissertation, and algorithms for functional backtracking, e.g., for pattern matching, for parsing, in the Algebraic Logic Functional programming language, and in the functional implementations of Prolog where the failure continuation is often kept implicit and the reason of being for the success continuation is that it is composable. Delimited continuations were first introduced by Felleisen in 1988 with an operator called , first introduced in a tech report in 1987, along with a prompt construct . The operator was designed to be a generalization of control operators that had been described in the literature such as call/cc from Scheme, ISWIM's J operator, John C. Reynolds' escape operator, and others. Subsequently, many competing delimited control operators were invented by the programming languages research community such as prompt and control, shift and reset,cupto, fcontrol, and others. Various operators for delimited continuations have been proposed in the research literature. One independent proposal is based on continuation-passing style (CPS) -- i.e., not on continuation frames—and offers two control operators, shift and reset, that give rise to static rather than to dynamic delimited continuations. The reset operator sets the limit for the continuation while the shift operator captures or reifies the current continuation up to the innermost enclosing reset. For example, consider the following snippet in Scheme: (* 2 (reset (+ 1 (shift k (k 5))))) The reset delimits the continuation that shift captures (named by k in this example).
Jian Wang, Mingkui Wang, Olivier Schneider, Zhirui Xu, Yiming Li, Yi Zhang, Lei Zhang, Yi Wang, Aurelio Bay, Ho Ling Li, Guido Haefeli, Tatsuya Nakada, Christoph Frei, Mark Tobin, Frédéric Blanc, Maurizio Martinelli, Vladislav Balagura, Donal Patrick Hill, Liang Sun, Lesya Shchutska, François Fleuret, Mirco Dorigo, Liupan An, Renato Quagliani, Hang Yin, Guido Andreassi, Aravindhan Venkateswaran, Elena Graverini, Michel De Cian, Vladimir Macko, Federico Leo Redi, Luis Miguel Garcia Martin, Sebastian Schulte, Tommaso Colombo, Vitalii Lisovskyi, Tara Nanut, Minh Tâm Tran, Violaine Bellée, Guillaume Max Pietrzyk, Pavol Stefko, Pietro Marino, Maria Vieites Diaz, Matthieu Philippe Luther Marinangeli, Serhii Cholak, Veronica Sølund Kirsebom, Maria Elena Stramaglia, Surapat Ek-In, Ana Bárbara Rodrigues Cavalcante, Luca Pescatore, Sara Celani, Preema Rennee Pais, Maxime Schubiger, Plamen Hristov Hopchev, Carina Trippl, Thi Dung Nguyen, Alison Maria Tully, Olivier Göran Girard, Mâu Chung Nguyên, Simone Meloni, Xiaoqing Zhou, Elisabeth Maria Niel, Alexandre Brea Rodriguez
Stephan Morgenthaler, Robert Staudte