## Naive Reverse can be Linear (1991)

Venue: | 8th Int. Conf. Logic Programming |

Citations: | 18 - 5 self |

### BibTeX

@INPROCEEDINGS{Brisset91naivereverse,

author = {Pascal Brisset and Olivier Ridoux},

title = {Naive Reverse can be Linear},

booktitle = {8th Int. Conf. Logic Programming},

year = {1991},

pages = {857--870},

publisher = {MIT Press}

}

### Years of Citing Articles

### OpenURL

### Abstract

We propose a new implementation of logic programming with higher-order terms. In order to illustrate the properties of our implementation, we apply the coding of lists as functions to the context of logic programming. As a side-effect, we show that higher-order unification is a good tool for manipulating the function-lists. It appears that the efficiency of the program thus obtained relies critically upon the implementation of higher-order operations (unification and reduction). In particular, we show that a good choice for data-structures and reduction strategy yields a linear naive reverse. 1 Introduction The extension of Prolog to higher-order terms has been proposed by Miller and Nadathur[6]. The prototypal system is Prolog, of which we know two implementations: a Prolog based implementation and a Lisp based one. The first one was intended for experimental use and is very inefficient. We shall only refer to the Lisp based implementation. We propose another implementation in which ...

### Citations

620 |
The Art of Prolog
- Sterling, Shapiro
- 1986
(Show Context)
Citation Context ... in the projection operation of MATCH. 3 Representation of lists In this section, we present three representations for lists in Prolog: the Prolog list, the difference-list and the function-list. See =-=[10]-=- for an exposition of the difference-list technique and its generalisation, the incomplete structure technique. See also [4] for an exposition of the function-list technique. 3.1 Prolog lists When lis... |

536 |
The Implementation of Functional Programming Languages
- Jones
- 1987
(Show Context)
Citation Context ...d to put terms in headnormal form before unification. 4.2.1 The higher-order terms The higher-order terms are represented by reversibly mutable graphs. Graph means that we intend to do graph reduction=-=[9]-=-. Mutable means that it is possible to physically replace a redex by its reduced form in the graph. This provides sharing of the reduction effort. Reversibly means that mutations (reductions) must be ... |

286 |
The Lambda-Calculus, its Syntax and Semantics, volume 103
- Barendregt
- 1984
(Show Context)
Citation Context ...gical variables. Variables are all bound in an abstraction. Unknowns are all bound in an implicit universal quantification. This distinction is of the same nature than Barendregt's variable convention=-=[1]-=-. It appears that unknowns and variables deserve very different implementations. Unknowns pertain to the Prolog technology, whereas variables pertain to the functional technology. Three equivalence re... |

169 |
A unification algorithm for typed -calculus
- Huet
- 1975
(Show Context)
Citation Context ...at is unification for the new terms. The restriction to Church's simply typed - terms allows for a usable definition of unification. Extensive presentation of higher-order unification can be found in =-=[3]-=- from where we take almost all of the vocabulary. 2.1 Simply typed -terms Simple types, T , are variable free first-order terms built from a collection of type constants and one dedicated binary type ... |

153 | Higher-order logic programming
- Miller
- 1990
(Show Context)
Citation Context ... show that a good choice for data-structures and reduction strategy yields a linear naive reverse. 1 Introduction The extension of Prolog to higher-order terms has been proposed by Miller and Nadathur=-=[6]-=-. The prototypal system is Prolog, of which we know two implementations: a Prolog based implementation and a Lisp based one. The first one was intended for experimental use and is very inefficient. We... |

46 |
A novel representation of lists and its application to the function “reverse
- Hughes
- 1986
(Show Context)
Citation Context ...in Prolog: the Prolog list, the difference-list and the function-list. See [10] for an exposition of the difference-list technique and its generalisation, the incomplete structure technique. See also =-=[4]-=- for an exposition of the function-list technique. 3.1 Prolog lists When lists are represented by Prolog lists, a cons is represented by the binary functor ./2 (noted [ --- ]) and the empty list is re... |

34 |
A Higher-Order Logic as the Basis for Logic Programming
- Nadathur
- 1987
(Show Context)
Citation Context ...his search procedure calls for some remarks. 1. A pair ! X; t ? (X does not occur in t) has a most general unifier X / t which is computed expensively by MATCH. SIMPL calls a procedure, named TRIV in =-=[7]-=-, that handles cheaply as many as possible similar cases. 2. A flexible-flexible pair is not solved but delayed as a constraint. The constraint will be tested for satisfiability as soon as the pair be... |

20 |
A new data structure for implementing extensions to Prolog
- Huitouze
- 1990
(Show Context)
Citation Context ...logic programming dialect. For instance, it is not specialised for the representation of -terms. But it provides general purpose data-structures for which an efficient memory management is implemented=-=[5]-=-. The theory of MALI memory management is based on the temporal relations between unknown creation, unknown binding and choice-point creation. We call usefulness-logic the specification of which data-... |

7 |
Towards a WAM model for Prolog
- Nadathur, Jayaraman
- 1989
(Show Context)
Citation Context ...nrev 6.2 20.6 79 338 1600 ? (1) list2flist .9 1.7 3.8 8.2 20 53 152 ? (2) list2flist .5 1 2.2 4.9 10.7 27 89 ? Table 3: eLP times (s on sun4 with 14 Mb) Another implementation of Prolog is under study=-=[8]-=-. It will be WAM inspired, will use internally the de Bruijn's nameless representation of -terms, and will be environment-based. This is a radical difference with our implementation but it is difficul... |

2 |
A memory with a real-time garbage collector for implementing logic programming languages
- Bekkers, Canet, et al.
- 1986
(Show Context)
Citation Context ...entation. We propose another implementation in which we apply two techniques that we have previously developed for Prolog. We translate Prolog programs into an imperative language (C), and we use MALI=-=[2]-=- as a term oriented abstract memory. In this paper, we explain how primitive higher-order operations (unification and reduction) are critical for an efficient usage of Prolog. We choose as an experime... |