1 research outputs found

    A Graph Reduction Technique with Sharing across Narrowings for Functional-Logic Languages

    No full text
    We present a system for the efficient implementation via graph reduction of functional-logic programming languages. In contrast to existing systems, ours allows sharing not only of fully common subexpressions but also of partially common expressions formed across narrowings, and allows both lazy and eager evaluation semantics. This sharing across narrowings is achieved by adapting a technique described by Lamping for optimal reduction of lambda terms. Implementations of functional-logic languages, by and large, use some form of backtracking when rebinding logical quantifiers after the violation of some restriction by a previous binding. Such backtracking will usually discard values computed since the original binding, but often some portion of those values will not be affected by the rebinding, and so must be recomputed wastefully. In this paper we present a set-based graph reduction technique for a lambda-calculus extended by relative set abstraction which allows such subexpressions ..
    corecore