English

Memoized Pull-Tabbing for Functional Logic Programming

Programming Languages 2020-08-28 v1

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 technique in the Julia programming language.

Keywords

Cite

@article{arxiv.2008.11999,
  title  = {Memoized Pull-Tabbing for Functional Logic Programming},
  author = {Michael Hanus and Finn Teegen},
  journal= {arXiv preprint arXiv:2008.11999},
  year   = {2020}
}

Comments

Part of WFLP 2020 pre-proceedings