effect handlers, Filinski’s monadic reflection, and delimited control. This comparison allows a precise discussion about the
relative expressiveness of each programming abstraction. It also demonstrates the sensitivity of the relative expressiveness of
user-defined effects to seemingly orthogonal language features.
We present each notion as an extension of a simply-typed core lambda-calculus with an effect type system. Using Felleisen’s
notion of a macro translation, we show that these abstractions can macro-express each other, providing we disregard types.
Alas, not all of the translations are type-preserving; moreover, no alternative type-preserving macro translations exist. We show
that if we add suitable notions of polymorphism to the core calculus and its extensions then all of the translations can be
adapted to preserve typing.
(based on joint work with Yannick Forster, Ohad Kammar, and Matija Pretnar)