Hyperfunctions: Communicating Continuations
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 somewhat 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.
Authors
- Donnacha Oisín Kidney (ORCID: https://orcid.org/0000-0003-4952-7359)
- Nicolas Wu
Institutions
- Imperial College London (GB)
Publication Details
- Journal
- Proceedings of the ACM on Programming Languages
- Published
- 2026-01-08
- DOI
- https://doi.org/10.1145/3776649
- Primary Topic
- Logic, programming, and type systems
- Type
- article
- Field-Weighted Citation Impact
- 0.00