13.03.16 - 18.03.16, Seminar 16112

From Theory to Practice of Algebraic Effects and Handlers

Diese Seminarbeschreibung wurde vor dem Seminar auf unseren Webseiten veröffentlicht und bei der Einladung zum Seminar verwendet.


Algebraic effects are an approach to computational effects based on the view that impure behavior arises from operations such as get & set for mutable store, or raise for exceptions. The algebraic treatment of operations naturally leads to a novel concept of handlers for all effects, not just exceptions. Handlers subsume many programming concepts, such as stream redirection, backtracking, cooperative multi-threading, and delimited continuations.

The theory of algebraic effects and handlers offers insights into effectful computation that have not yet been transferred to industrial programming languages. The seminar willbe devoted to connecting recent theoretical advances with the state-of-the-art techniques in programming language design and implementation.

A most natural setting for taking up the challenge is an ML style language such as OCaml. Algebraic effects and handlers are an extension of effects in ML, while the ML type system may be enriched with effect information that aids program analysis and optimization. We are confident that addition of user-defined effects and general handlers to OCaml would be warmly welcomed by a wide range of users, as there has long been interest in extending the set of available effects.

The objectives of the seminar are:

  • Find practical and efficient ways of incorporating algebraic effects and handlers into existing functional programming languages.
  • Determine to what extent algebraic effects and handlers help with program analysis and optimization techniques, such as parallelization of code.
  • Explore new programming techniques based on algebraic effects and handlers.
  • Open new research topics in theoretical computer science by outlining future theoretical support for problems that arise in the practice of programming language design and implementation.