Author:
SALEH AMR HANY,SCHRIJVERS TOM
Abstract
AbstractRecent 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.
Publisher
Cambridge University Press (CUP)
Subject
Artificial Intelligence,Computational Theory and Mathematics,Hardware and Architecture,Theoretical Computer Science,Software
Reference18 articles.
1. Roy P. V. 1989. A useful extension to Prolog's definite clause grammar notation. In ACM SIGPLAN Notices, Vol. 24, 11, Nov. 1989, 132–134.
2. Tabling as a library with delimited control
3. Letters to the editor: go to statement considered harmful
4. Fusion for Free
5. Ivanovic D. , Morales Caballero J. F. , Carro M. and Hermenegildo M. 2009. Towards structured state threading in Prolog. In CICLOPS 2009.
Cited by
5 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献