Invited Lecture on Effect Handlers
AlumniJonathan Brachthäuser is invited to give a guest lecture at the Modern Programming Languages seminar, organized by the Cusanuswerk sponsorship organization.
Effects are all around us: promiment examples of (control) effects include dependencies on configuration or other modules, exceptional control flow, asynchronous calls to remote APIs, nondeterminism, probabilisitic control flow and many more. Effect handlers are a promising way to structure effectful programs in a modular way. In this lecture, I present the Scala library Effekt, which makes use of both the functional and object oriented features of Scala. In particular, we follow FP best practices and make the use of effects explicit in the type of a program. We also follow OO best practices and separate the effects into interfaces, programs using the interfaces and implementations of those interfaces. Using Scala’s features of intersection types, trait/mixin-composition, implicit parameter passing and first class modules (as objects), Effekt offers interesting extensibility properties.