The focus of this project is to integrate the programming abstraction
of effect handlers into existing object oriented programming
languages and explore the interaction with other modularity features.
We also investigate various implementation techniques and their
impact on performance.
The Effekt Language Family
We designed and implemented various languages with support for
effect handlers and delimited control. Each language explores a
different aspect of the design space.
Effect handlers as generalizations of exception handlers offer interesting
new ways to modularize software. Scala Effekt is an implementation of
effect handlers, based on capability passing. Instead of searching for
the correct handler in runtime, the handler is passed down to where the
effect is used.
This allows convenient implementations in languages like Scala
and Java and comes with performance improvements.
Scala 3 introduced the new feature of implicit function types, greatly
reducing the burden of explicit capability passing.
can leak and leave the scope of the defining handler leading to
The Language Server Protocol (LSP) defines a protocol used between an editor or IDE and a language server that provides language features like auto complete, go to definition, find all references etc.
The Language Server Protocol has to be implemented once for every programming language and once for every editor, instead of once for every combination of programming language and editor, thus reducing a m x n problem to a m + n problem.