Memoized Pull-Tabbing for Functional Logic Programming
Michael Hanus, Finn Teegen

TL;DR
This paper introduces an improved pull-tabbing evaluation technique for functional logic programming that avoids efficiency issues caused by choice duplication, demonstrated through a Julia implementation.
Contribution
It proposes a refined pull-tabbing method that prevents choice duplication, maintaining the technique's flexibility and efficiency in functional logic languages.
Findings
The refined method reduces execution time compared to traditional pull-tabbing.
Implementation in Julia shows practical viability and performance benefits.
Maintains independence from search strategies while improving efficiency.
Abstract
Pull-tabbing is an evaluation technique for functional logic programs which computes all non-deterministic results in a single graph structure. Pull-tab steps are local graph transformations to move non-deterministic choices towards the root of an expression. Pull-tabbing is independent of a search strategy so that different strategies (depth-first, breadth-first, parallel) can be used to extract the results of a computation. It has been used to compile functional logic languages into imperative or purely functional target languages. Pull-tab steps might duplicate choices in case of shared subexpressions. This could result in a dramatic increase of execution time compared to a backtracking implementation. In this paper we propose a refinement which avoids this efficiency problem while keeping all the good properties of pull-tabbing. We evaluate a first implementation of this improved…
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.
