Efficient Algebraic Effect Handlers for Prolog
Amr Hany Saleh, Tom Schrijvers

TL;DR
This paper introduces algebraic effect handlers for Prolog to provide a high-level, modular way of defining side-effects, along with an optimized compilation approach to improve performance, demonstrated through benchmarks.
Contribution
It presents the first implementation of algebraic effect handlers for Prolog, combining partial evaluation and rewrite rules for efficient execution.
Findings
Effect inference effectively guides optimizations.
Optimized compilation reduces overhead of effect handling.
Benchmarks show improved performance over naive implementations.
Abstract
Recent work has provided delimited control for Prolog to dynamically manipulate the program control-flow, and to implement a wide range of control-flow and dataflow effects on top of. Unfortunately, delimited control is a rather primitive language feature that is not easy to use. As a remedy, this work introduces algebraic effect handlers for Prolog, as a high-level and structured way of defining new side-effects in a modular fashion. We illustrate the expressive power of the feature and provide an implementation by means of elaboration into the delimited control primitives. The latter add a non-negligible performance overhead when used extensively. To address this issue, we present an optimised compilation approach that combines partial evaluation with dedicated rewrite rules. The rewrite rules are driven by a lightweight effect inference that analyses what effect operations may be…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
