Hyperfunctions: Communicating Continuations

Read full text
Authors: Donnacha Oisín Kidney, Nicolas Wu
Cited by: 0
References: 43

Abstract

A hyperfunction is a continuation-like construction that can be used to implement communication in the context of concurrency. Though it has been reinvented many times, it remains obscure: since its definition by Launchbury et al. , hyperfunctions have been used to implement certain algebraic effect handlers, coroutines, and breadth-first traversals; however, in each of these examples, the hyperfunction type went unrecognised. We identify the hyperfunctions hidden in all of these algorithms, and we exposit the common pattern between them, building a framework for working with and reasoning about hyperfunctions. We use this framework to solve a long-standing problem: giving a fully-abstract continuation-based semantics for a concurrent calculus, the Calculus of Communicating Systems. Finally, we use hyperfunctions to build a monadic Haskell library for efficient first-class coroutines.

Fields of Study & Subjects

Logic programming and type systems Formal Methods in Verification Reasoning and Knowledge

Publication details

Journal / source
Proceedings of the ACM on Programming Languages
Volume
10
Issue
POPL
Pages
174–203
Publication date
8 January 2026
Language
EN