Hostname: page-component-74656f9884-8r8nv Total loading time: 0 Render date: 2026-11-10T10:46:23.906Z Has data issue: false hasContentIssue false

Efficient algebraic effect handlers for Prolog

Published online by Cambridge University Press:  14 October 2016

AMR HANY SALEH
Affiliation:
KU Leuven, Belgium, Department of Computer Science (e-mail: ah.saleh@cs.kuleuven.be, tom.schrijvers@cs.kuleuven.be)
TOM SCHRIJVERS
Affiliation:
KU Leuven, Belgium, Department of Computer Science (e-mail: ah.saleh@cs.kuleuven.be, tom.schrijvers@cs.kuleuven.be)
Rights & Permissions [Opens in a new window]

Abstract

Core share and HTML view are not available for this content. However, as you have access to this content, a full PDF is available via the 'Save PDF' action button.

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 called by a goal. We illustrate the effectiveness of this approach on a range of benchmarks.

Information

Type
Regular Papers
Copyright
Copyright © Cambridge University Press 2016 
Supplementary material: PDF

Saleh and Schrijvers supplementary material

Appendix A-C

Download Saleh and Schrijvers supplementary material(PDF)
PDF 189.9 KB