Results 1  10
of
21
The NarrowingDriven Approach to Functional Logic Program Specialization
 New Generation Computing
, 2002
"... Partial evaluation is a semanticsbased program optimization technique which has been investigated within di#erent programming paradigms and applied to a wide variety of languages. Recently, a partial evaluation framework for functional logic programs has been proposed. ..."
Abstract

Cited by 33 (19 self)
 Add to MetaCart
Partial evaluation is a semanticsbased program optimization technique which has been investigated within di#erent programming paradigms and applied to a wide variety of languages. Recently, a partial evaluation framework for functional logic programs has been proposed.
The abstraction and instantiation of stringmatching programs
, 2001
"... We consider a naive, quadratic string matcher testing whether a pattern occurs in a text; we equip it with a cache mediating its access to the text; and we abstract the traversal policy of the pattern, the cache, and the text. We then specialize this abstracted program with respect to a pattern, usi ..."
Abstract

Cited by 14 (7 self)
 Add to MetaCart
We consider a naive, quadratic string matcher testing whether a pattern occurs in a text; we equip it with a cache mediating its access to the text; and we abstract the traversal policy of the pattern, the cache, and the text. We then specialize this abstracted program with respect to a pattern, using the offtheshelf partial evaluator Similix. Instantiating the abstracted program with a lefttoright traversal policy yields the lineartime behavior of Knuth, Morris and Pratt’s string matcher. Instantiating it with a righttoleft policy yields the lineartime
Fast Partial Evaluation of Pattern Matching in Strings
 Proceedings of the ACM SIGPLAN Workshop on Partial Evaluation and SemanticsBased Program Manipulation (PEPM ’03
, 2003
"... We show how to obtain all of Knuth, Morris, and Pratt's lineartime string matcher by partial evaluation of a quadratictime string matcher with respect to a pattern string. Although it has been known for 15 years how to obtain this linear matcher by partial evaluation of a quadratic one, h ..."
Abstract

Cited by 7 (0 self)
 Add to MetaCart
We show how to obtain all of Knuth, Morris, and Pratt's lineartime string matcher by partial evaluation of a quadratictime string matcher with respect to a pattern string. Although it has been known for 15 years how to obtain this linear matcher by partial evaluation of a quadratic one, how to obtain it in linear time has remained an open problem.
Rules + Strategies for Transforming Lazy Functional Logic Programs
 Theoretical Computer Science
, 2004
"... This work introduces a transformation methodology for functional logic programs based on needed narrowing, the optimal and complete operational principle for modern declarative languages which integrate the best features of functional and logic programming. We provide correctness results for the tra ..."
Abstract

Cited by 5 (3 self)
 Add to MetaCart
This work introduces a transformation methodology for functional logic programs based on needed narrowing, the optimal and complete operational principle for modern declarative languages which integrate the best features of functional and logic programming. We provide correctness results for the transformation system w.r.t. the set of computed values and answer substitutions and show that the prominent properties of needed narrowing—namely, the optimality w.r.t. the length of derivations and the number of computed solutions—carry over to the transformation process and the transformed programs. We illustrate the power of the system by taking on in our setting two wellknown transformation strategies (composition and tupling). We also provide an implementation of the transformation system which, by means of some experimental results, highlights the potentiality of our approach.
CostAugmented Partial Evaluation of Functional Logic Programs
 HigherOrder and Symbolic Computation
, 2004
"... We enhance the narrowingdriven partial evaluation scheme for lazy functional logic programs with the computation of symbolic costs. The enhanced scheme allows us to estimate the e#ects of the program transformer in a precise framework and, moreover, to quantify these e#ects. The considered costs ar ..."
Abstract

Cited by 4 (2 self)
 Add to MetaCart
We enhance the narrowingdriven partial evaluation scheme for lazy functional logic programs with the computation of symbolic costs. The enhanced scheme allows us to estimate the e#ects of the program transformer in a precise framework and, moreover, to quantify these e#ects. The considered costs are "symbolic " in the sense that they measure the number of basic operations performed during a computation rather than actual execution times. Our scheme may serve as a basis to develop speedup analyses and costguided transformers. A costaugmented partial evaluator, which demonstrates the usefulness of our approach, has been implemented in the multiparadigm language Curry.
Partial Evaluation of Pattern Matching in Strings, revisited
, 2000
"... Specializing string matchers is a canonical example of partial evaluation. A naive ..."
Abstract

Cited by 3 (0 self)
 Add to MetaCart
Specializing string matchers is a canonical example of partial evaluation. A naive
Removing Redundant Arguments of Functions
 In 9th International Conference on Algebraic Methodology And Software Technology, AMAST 2002, H. Kirchner and C. Ringeissen, Eds. Lecture Notes in Computer Science
, 2002
"... The application of automatic transformation processes during the formal development and optimization of programs can introduce encumbrances in the generated code that programmers usually (or presumably) do not write. An example is the introduction of redundant arguments in the functions defined in t ..."
Abstract

Cited by 3 (2 self)
 Add to MetaCart
The application of automatic transformation processes during the formal development and optimization of programs can introduce encumbrances in the generated code that programmers usually (or presumably) do not write. An example is the introduction of redundant arguments in the functions defined in the program. Redundancy of a parameter means that replacing it by any expression does not change the result. In this work, we provide a method for the analysis and elimination of redundant arguments in term rewriting systems as a model for the programs that can be written in more sophisticated languages.
UPVCurry: An Incremental Curry Interpreter
, 1999
"... . Functional logic programming integrates the best features of modern functional and logic languages. The multiparadigm declarative language Curry is an extension of Haskell which is intended to become a standard in the area. In this paper, we present UPVCurry, an efficient and quite complete impl ..."
Abstract

Cited by 3 (2 self)
 Add to MetaCart
. Functional logic programming integrates the best features of modern functional and logic languages. The multiparadigm declarative language Curry is an extension of Haskell which is intended to become a standard in the area. In this paper, we present UPVCurry, an efficient and quite complete implementation of Curry based on a new, incremental definition of its basic evaluation mechanism. We compare UPVCurry with already existing implementations of other Curry interpreters. Keywords: Curry, Functional logic languages, Implementation. 1 Introduction Functional logic languages combine the best features of the most important declarative programming paradigms, namely functional and logic programming (see [Han94] for a survey). Throughout this decade, many practical proposals have been made to amalgamate functional and logic programming languages. However, these languages have not succeeded in becoming widely used by the functional or logic programming communities. The multiparadigm l...
An Automatic Composition Algorithm for Functional Logic Programs
, 2000
"... . Functional logic languages with a complete operational semantics are based on narrowing, which combines the instantiation of variables with the reduction of expressions. In this paper, we investigate the relationship between partial evaluation and more general transformations based on folding/ ..."
Abstract

Cited by 2 (2 self)
 Add to MetaCart
. Functional logic languages with a complete operational semantics are based on narrowing, which combines the instantiation of variables with the reduction of expressions. In this paper, we investigate the relationship between partial evaluation and more general transformations based on folding/unfolding. First, we show that the transformations obtained by partial evaluators can be also achieved by folding/unfolding using a particular kind of eurekas which can be mechanically attained. Then, we propose an algorithm (based on folding/unfolding) which starts with the automatic eureka generation and is able to perform program composition, i.e., it is able to produce a single function definition for some nested functions of the original program. This avoids the construction of intermediate data structures that are produced by the inner function and consumed as inputs by the outer function. As opposed to both partial evaluation and (general) fold/unfold transformations, strong ...
Incremental Needed Narrowing
 In Proc. of the Int’l Workshop on Implementation of Declarative Languages (IDL’99
, 1999
"... Needed narrowing is currently the best complete strategy for executing inductively sequential functional logic programs. Its optimality properties and the fact that inductively sequential programs are a subclass of strongly sequential programs support the claim that needed narrowing must be consider ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
Needed narrowing is currently the best complete strategy for executing inductively sequential functional logic programs. Its optimality properties and the fact that inductively sequential programs are a subclass of strongly sequential programs support the claim that needed narrowing must be considered the functional logic couterpart of Huet and Lévy's strongly needed reduction. In this paper, we show how a preeminent property of reduction in (a distinguished subclass of) strongly sequential programs, namely the incrementality of the evaluation, can be inherited by needed narrowing. We give an incremental definition of needed narrowing and show that the original optimality properties are kept. Moreover, we experimentally demonstrate that the incremental refinement can lead to substantial improvements in the overall evaluation process.