Handling Higher-Order Effects

by   Cas van der Rest, et al.

Algebraic effect handlers is a programming paradigm where programmers can declare their own syntactic operations, and modularly define the semantics of these using effect handlers. However, we cannot directly define algebraic effect handlers for many higher-order operations (or higher-order effects) – i.e., operations that have computations as parameters. Examples of such higher-order effects include common programming features, such as try-catch exception handlers, function abstraction, and more. In this paper we present a new kind of effect handler that addresses this shortcoming. Our effect handler approach is closely related to previous work on scoped effect handlers, which also supports higher-order effects. A key difference is that our effect handlers make it easy to understand separate (higher-order) effects as separate concerns, since effects do not interact. In contrast, effect interaction is the default with scoped effect handlers. While separate concerns is the default with our handlers, it is also possible to define handlers where effects interact.


page 1

page 2

page 3

page 4


Minimum Model Semantics for Extensional Higher-order Logic Programming with Negation

Extensional higher-order logic programming has been introduced as a gene...

Eff Directly in OCaml

The language Eff is an OCaml-like language serving as a prototype implem...

Modular Termination for Second-Order Computation Rules and Application to Algebraic Effect Handlers

We present a new modular proof method of termination for second-order co...

Inductive and Coinductive Predicate Liftings for Effectful Programs

We formulate a framework for describing behaviour of effectful higher-or...

Polymorphic Iterable Sequential Effect Systems

Effect systems are lightweight extensions to type systems that can verif...

Structured Handling of Scoped Effects: Extended Version

Algebraic effects offer a versatile framework that covers a wide variety...

CallE: An Effect System for Method Calls

Effect systems are used to statically reason about the effects an expres...