Tutorial C3: Concurrent Programming with Effect Handlers
Algebraic effect handlers are a new control operator that generalize common control-flow abstractions such as exceptions, generators, or concurrency, as well as other seemingly esoteric programming abstractions such as transactional memory and probabilistic computations. The idea of algebraic effects and handlers has been experimented with in the form of libraries in several mainstream languages, including OCaml, Haskell, Standard ML, Clojure, and Scala. Multicore OCaml is an extension of OCaml with effect handlers as a primary means of expressing concurrency. Effect handlers are used to implement thread schedulers as user-level libraries, enabling programmers to specialize their concurrency and parallelization strategies.
We propose a tutorial on practical concurrent and parallel programming using effect handlers in Multicore OCaml. We aim to introduce algebraic effects handlers in Multicore OCaml with toy examples. We will then illustrate through several hands-on exercises, how exceptions, cooperative concurrency, generators, async/await mechanisms can be implemented using effect handlers.
The tutorial is targeted at functional programmers who are beginners in concurrent programming.