Technical Talk: Effect Handler Oriented Programming
Time: December 10th, 10 am.
Speaker: Sam Lindley, Senior Consultant
In software systems effects are pervasive, e.g.: concurrency, distribution, exceptions, I/O, and nondeterminism. Effect handlers are a general programming feature that can be used for modularly implementing all of these effects and more. They were introduced by theoretical computer scientists studying the theory of algebraic effects, but now show promise as a practical programming tool. Interest in effect handlers in industry is growing. For instance, Facebook’s React.JS UI library relies on implementation strategies and abstractions that are directly inspired by effect handlers. Moreover, Uber’s Pyro tool for probabilistic programming and GitHub’s Semantic library for parsing, analysing, and comparing source code, both make essential use of effect handlers.
I will give an overview of effect handler oriented programming by way of a collection of examples and an operational semantics. I will focus on concurrency examples, illustrating how effect handlers provide a flexible foundation for composing and customising a range of different concurrency abstractions. I will also briefly outline some of my contributions to the theory and practice of effect handler oriented programming as well as discussing challenges and future opportunities.