Algebraic effects and handlers are a promising technique for incorporating
composable computational effects into functional programming languages.
Effect handlers enable concisely programming with different effects, but they do
not offer a convenient way to program with different instances of the same
effect.
As a solution to this inconvenience, previous studies have introduced named
effect handlers, which allow the programmer to distinguish among different
effect instances. However, existing formalizations of named handlers are both involved and
restrictive, as they employ non-standard mechanisms to prevent the escaping of
handler names.
In this paper, we propose a simple and flexible design of named handlers.
Specifically, we treat handler names as first-class values, and prevent their
escaping while staying within the ordinary $\lambda$-calculus.
Such a design is enabled by combining named handlers with scoped effects, a
novel variation of effects that maintain a scope via rank-2 polymorphism.
We formalize two combinations of named handlers and scoped effects, and
implement them in the Koka programming language.
We also present practical applications of named handlers, including a neural
network and a unification algorithm.
Fri 9 DecDisplayed time zone: Auckland, Wellington change
15:30 - 17:00 | |||
15:30 30mResearch paper | Effects, capabilities, and boxes: from scope-based reasoning to type-based reasoning and back OOPSLA Jonathan Immanuel Brachthäuser University of Tübingen, Philipp Schuster University of Tübingen, Edward Lee University of Waterloo, Aleksander Boruch-Gruszecki EPFL DOI | ||
16:00 30mTalk | First-class Names for Effect Handlers OOPSLA Ningning Xie University of Toronto, Youyou Cong Tokyo Institute of Technology, Kazuki Ikemori Tokyo Institute of Technology, Daan Leijen Microsoft Research DOI | ||
16:30 30mTalk | High-Level Effect Handlers in C++ OOPSLA Dan Ghica Huawei, Sam Lindley University of Edinburgh, Marcos Maronas Bravo Huawei, Maciej Piróg Huawei DOI |