A Framework for Higher-Order Effects Handlers

02/02/2023
by   Birthe van den Berg, et al.
0

Algebraic effects handlers are a modular approach for modeling side-effects in functional programming. Their syntax is defined in terms of a signature of effectful operations, encoded as a functor, that are plugged into the free monad; their denotational semantics is defined by fold-style handlers that only interpret their part of the syntax and forward the rest. However, not all effects are algebraic: some need to access an internal computation. For example, scoped effects distinguish between a computation in scope and out of scope; parallel effects parallellize over a computation, latent effects defer a computation. Separate definitions have been proposed for these higher-order effects and their corresponding handlers, often leading to expedient and complex monad definitions. In this work we propose a generic framework for higher-order effects, generalizing algebraic effects handlers: a generic free monad with higher-order effect signatures and a corresponding interpreter. Specializing this higher-order syntax leads to various definitions of previously defined (scoped, parallel, latent) and novel (writer, bracketing) effects. Furthermore, we formally show our framework theoretically correct, also putting different effect instances on formal footing; a significant contribution for parallel, latent, writer and bracketing effects.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
03/07/2022

Handling Higher-Order Effects

Algebraic effect handlers is a programming paradigm where programmers ca...
research
12/31/2018

Eff Directly in OCaml

The language Eff is an OCaml-like language serving as a prototype implem...
research
07/11/2018

Everybody's Got To Be Somewhere

The key to any nameless representation of syntax is how it indicates the...
research
08/25/2021

Latent Effects for Reusable Language Components: Extended Version

The development of programming languages can be quite complicated and co...
research
01/05/2020

A Diagrammatic Calculus for Algebraic Effects

We introduce a new, diagrammatic notation for representing the result of...
research
07/25/2023

Higher-Order Asynchronous Effects

We explore asynchronous programming with algebraic effects. We complemen...
research
10/09/2022

What should a generic object be?

Jacobs has proposed definitions for (weak, strong, split) generic object...

Please sign up or login with your details

Forgot password? Click here to reset