Programming Languages

Effekt: Algebraic Effect Handlers

The focus of this project is to study how to integrate the programming abstraction of effect handlers into existing general purpose programming languages. We investigate:
  • the integration with object-oriented programming and and explore the interaction with other modularity features,
  • novel approaches to guarantee effect safety, as well as
  • 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.

Effekt (Standalone Language)

Scala Effekt (Library Embedding)

Java Effekt (Library Embedding)

Efficient Compilation

Participating Team Members

Jonathan Brachthäuser

Philipp Schuster

Klaus Ostermann

Publications

Effekt: Capability-Passing Style for Type- and Effect-Safe, Extensible Effect Handlers in Scala

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

In Journal of Functional Programming 30: , 2020.

Learn More

Compiling Effect Handlers in Capability-Passing Style

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

In Proc. Int’l Conf. Functional Programming (ICFP). ACM Press, 2020.

Learn More

Effect Handlers, Evidently

by Ningning Xie, Jonathan Immanuel Brachthäuser, Daniel Hillerström, Philipp Schuster, and Daan Leijen

In Proc. Int’l Conf. Functional Programming (ICFP). ACM Press, 2020.

Learn More

Effekt: Lightweight Effect Polymorphism for Handlers (Technical Report)

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

Technical report. University of Tübingen, Germany, 2020.

Learn More

Effects as Capabilities: Effect Handlers and Lightweight Effect Polymorphism

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

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

Learn More

Design and Implementation of Effect Handlers for Object-Oriented Programming Languages

by Jonathan Immanuel Brachthäuser

PhD thesis. University of Tübingen, Germany, 2020.

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

Zero-cost Effect Handlers by Staging (Technical Report)

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

Technical report. University of Tübingen, Germany, 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

Paper accepted for publication at OOPSLA 2020

Our paper “Effects as Capabilities: Effect Handlers and Lightweight Effect Polymorphism” (Jonathan Brachthäuser
Researcher
Jonathan Immanuel Brachthäuser
, Philipp Schuster
Researcher
Philipp Schuster
and Klaus Ostermann
Head
Klaus Ostermann
) has been accepted for publication at the International Conference on Object Oriented Programming Systems Languages & Applications (OOPSLA, 2020).

Read more ...

Paper accepted for publication in the Journal of Functional Programming

Our paper “Effekt: Capability-Passing Style for Type- and Effect-Safe, Extensible Effect Handlers in Scala” (Jonathan Brachthäuser
Researcher
Jonathan Immanuel Brachthäuser
, Philipp Schuster
Researcher
Philipp Schuster
and Klaus Ostermann
Head
Klaus Ostermann
) has been accepted for been accepted for publication in the Journal of Functional Programming (JFP).

Read more ...

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 ...

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 ...

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 ...