Programming Languages

Effekt: Algebraic Effect Handlers

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.

Scala Effekt

Idris Effekt

Java Effekt

Effekt

Participating Team Members

Jonathan Brachthäuser

Philipp Schuster

Klaus Ostermann

Publications

Effekt: Type- and Effect-safe, Extensible Effect Handlers in Scala

by Jonathan Immanuel Brachthäuser, Philipp Schuster, and Klaus Ostermann

Unpublished. Under consideration for publication in Journal of Functional Programming, 2019.

Learn More

Programming with Implicit Values, Functions, and Control

by Jonathan Immanuel Brachthäuser and Daan Leijen

Technical report MSR-TR-2019-7. Microsoft Research, 2019.

Learn More

Effect Handlers for the Masses

by Jonathan Brachthäuser, Philipp Schuster, and Klaus Ostermann

In Proc. Int’l Conf. Object-Oriented Programming, Systems, Languages and Applications (OOPSLA). ACM Press, 2018.

Learn More

Typing, Representing, and Abstracting Control: Functional Pearl

by Philipp Schuster and Jonathan Brachthäuser

In Proceedings of the International Workshop on Type-Driven Development. ACM Press, 2018.

Learn More

Towards Naturalistic EDSLs using Algebraic Effects

by Jonathan Immanuel Brachthäuser

In Workshop for Domain Specific Languages, Design and Implementation (DSLDI), 2017.

Learn More

Effekt: Extensible Algebraic Effects in Scala (Short Paper)

by Jonathan Immanuel Brachthäuser and Philipp Schuster

In Proceedings of the International Symposium on Scala. ACM Press, 2017.

Learn More

News

Invited Lecture on Effect Handlers

Jonathan Brachthäuser
Researcher
Jonathan Brachthäuser
is invited to give a guest lecture at the Modern Programming Languages seminar, organized by the Cusanuswerk sponsorship organization.

Read more ...

Shonan Meeting on Programming and Reasoning with Algebraic Effects and Effect Handlers

Philipp Schuster
Researcher
Philipp Schuster
attends the Shonan meeting on “Programming and Reasoning with Algebraic Effects and Effect Handlers” from March 25 to 29, 2019.

Read more ...

Presentation at OOPSLA 2018

Jonathan Brachthäuser
Researcher
Jonathan Immanuel Brachthäuser
presents the paper Effect Handlers for the Masses at the International Conference on Object-Oriented Programming, Systems, Languages and Applications (OOPSLA) in Boston, MA, USA.

Read more ...

Presentation at Type-Driven Development 2018

Philipp Schuster
Researcher
Philipp Schuster
presents the functional pearl Typing, Representing, and Abstracting Control at Type-Driven Development 2018.

Read more ...

Dagstuhl Seminar on Domain-Specific Languages

Jonathan Brachthäuser
Researcher
Jonathan Immanuel Brachthäuser
attends the Dagstuhl-Seminar on “Algebraic Effect Handlers go Mainstream” from April 22 to 27, 2018.

Read more ...

Presentation at the Scala Symposium 2017

Jonathan Brachthäuser
Researcher
Jonathan Immanuel Brachthäuser
presents the paper Effekt: Extensible Algebraic Effects in Scala at the Scala Symposium 2017.

Read more ...

Presentation at DSLDI 2017

Jonathan Brachthäuser
Researcher
Jonathan Immanuel Brachthäuser
talks about Towards Naturalistic EDSLs using Algebraic Effects at the Workshop for Domain Specific Languages, Design and Implementation (DSLDI) 2017.

Read more ...

Assigned Thesis Topics

Implementing the language server protocol for Koka

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.

Read more ...

Finished Thesis Topics

Second-Class Values for Safer Effect Handlers

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. However, capabilities can leak and leave the scope of the defining handler leading to runtime errors.

Read more ...