Using Continuations to express Control Logic


Software Composition is the combination of different software components to achieve a larger, aggregated, whole. This can be achieved by (a combination of) merging source code, by expressing combined data structures, or by defining specific semantics for the flow of control between (statements of) different modules. Examples of the latter are subroutine calls, asynchronous events, exception handling and advice in aspect-oriented programming.

The goal of this assignment is to investigate how the presence of (first class) continuations[2] in a programming langauge (possibly as a library) can be used to express many different (control-related) compositions.


Having a generic mechanism that is able to express a wide range of programming (composition) language behavior, (1) helps to beter understand programming language mechanisms and their differences, (2) is a step towards programming (languages) that are based on a very simple core langauge, but still able to cater with the variety of language mechanisms that different applications and domains request. An example of the latter is Co-op [1].

List of Tasks


literature study on continuations


(literature) study on the possible application of continuations for a wide range of control behavior, as well as its limitations


using any suitable language that supports continuations (e.g. Ruby, javaScript, Scala), demonstrate the feasibility of a number of such applications


examine the boundaries of the possibilities: what are the limitations of continuations for expressing control logic.


[1] (esp. Co-op documentation page)

[2] Continuations in wikipedia


Lodewijk Bergmans