Results 1 - 10
of
16
The Narrowing-Driven Approach to Functional Logic Program Specialization
- New Generation Computing
, 2002
"... Partial evaluation is a semantics-based 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 32 (18 self)
- Add to MetaCart
Partial evaluation is a semantics-based 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.
Homeomorphic embedding for online termination of symbolic methods
- In The essence of computation, volume 2566 of LNCS
, 2002
"... Abstract. Well-quasi orders in general, and homeomorphic embedding in particular, have gained popularity to ensure the termination of techniques for program analysis, specialisation, transformation, and verification. In this paper we survey and discuss this use of homeomorphic embedding and clarify ..."
Abstract
-
Cited by 25 (5 self)
- Add to MetaCart
Abstract. Well-quasi orders in general, and homeomorphic embedding in particular, have gained popularity to ensure the termination of techniques for program analysis, specialisation, transformation, and verification. In this paper we survey and discuss this use of homeomorphic embedding and clarify the advantages of such an approach over one using well-founded orders. We also discuss various extensions of the homeomorphic embedding relation. We conclude with a study of homeomorphic embedding in the context of metaprogramming, presenting some new (positive and negative) results and open problems.
Specialization of Inductively Sequential Functional Logic Programs
, 1999
"... Functional logic languages combine the operational principles of the most important declarative programming paradigms, namely functional and logic programming. Inductively sequential programs admit the definition of optimal computation strategies and are the basis of several recent (lazy) functional ..."
Abstract
-
Cited by 21 (11 self)
- Add to MetaCart
Functional logic languages combine the operational principles of the most important declarative programming paradigms, namely functional and logic programming. Inductively sequential programs admit the definition of optimal computation strategies and are the basis of several recent (lazy) functional logic languages. In this paper, we define a partial evaluator for inductively sequential functional logic programs. We prove strong correctness of this partial evaluator and show that the nice properties of inductively sequential programs carry over to the specialization process and the specialized programs. In particular, the structure of the programs is preserved by the specialization process. This is in contrast to other partial evaluation methods for functional logic programs which can destroy the original program structure. Finally, we present some experiments which highlight the practical advantages of our approach. 1 Introduction Functional logic languages combine the operational p...
Specialization of Functional Logic Programs Based on Needed Narrowing
- Proc. of ICFP'99
, 1999
"... Functional logic languages with a complete operational semantics are based on narrowing, a unification-based goal-solving mechanism which subsumes the reduction principle of functional languages and the resolution principle of logic languages. Needed narrowing is an optimal narrowing strategy and th ..."
Abstract
-
Cited by 14 (9 self)
- Add to MetaCart
Functional logic languages with a complete operational semantics are based on narrowing, a unification-based goal-solving mechanism which subsumes the reduction principle of functional languages and the resolution principle of logic languages. Needed narrowing is an optimal narrowing strategy and the basis of several recent functional logic languages. In this paper, we define a partial evaluator for functional logic programs based on needed narrowing. We prove strong correctness of this partial evaluator and show that the nice properties of needed narrowing carry over to the specialization process and the specialized programs. In particular, the structure of the specialized programs provides for the application of optimal evaluation strategies. This is in contrast to other partial evaluation methods for functional logic programs which can change the original program structure in a negative way. Finally, we present some experiments which highlight the practical advantages of our approach.
A Unifying View of Functional and Logic Program Specialization
, 1998
"... rogramming (computation of normal forms) as well as logic programming (computation of answers). Essentially, it consists of computing an appropriate substitution such that when applied to the current goal it becomes reducible, and then reducing it [10]. This work has been partially supported by CIC ..."
Abstract
-
Cited by 14 (10 self)
- Add to MetaCart
rogramming (computation of normal forms) as well as logic programming (computation of answers). Essentially, it consists of computing an appropriate substitution such that when applied to the current goal it becomes reducible, and then reducing it [10]. This work has been partially supported by CICYT under grant TIC 95-0433-C03-03 and by HCM project CONSOLE. Permission to make digital or hard copies of part or all of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or direct commercial advantage and that copies show this notice on the first page or initial screen of a display along with the full citation. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, to republish, to post on servers, to redistribute to lists, or to use any component of this work in other works, requires prior specific permission and/or a fee. Permissions
There and Back Again
- In ICFP ’02: Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
, 2001
"... We illustrate a variety of programming problems that seemingly require two separate list traversals, but that can be efficiently solved in one recursive descent, without any other auxiliary storage but what can be expected from a control stack. The idea is to perform the second traversal when return ..."
Abstract
-
Cited by 9 (2 self)
- Add to MetaCart
We illustrate a variety of programming problems that seemingly require two separate list traversals, but that can be efficiently solved in one recursive descent, without any other auxiliary storage but what can be expected from a control stack. The idea is to perform the second traversal when returning from the first.
Driving in the Jungle
- In Olivier Danvy and Andrzej Filinski, editors, Proceedings of the Second Symposium on Programs as Data Objects
, 2001
"... Collapsed-jungle evaluation is an evaluation strategy for functional programs that can give super-linear speedups compared to conventional evaluation strategies such as call-by-need. However, the former strategy may incur administrative evaluation overhead. We demonstrate how this overhead can be el ..."
Abstract
-
Cited by 4 (1 self)
- Add to MetaCart
Collapsed-jungle evaluation is an evaluation strategy for functional programs that can give super-linear speedups compared to conventional evaluation strategies such as call-by-need. However, the former strategy may incur administrative evaluation overhead. We demonstrate how this overhead can be eliminated by transforming the program using a variation of positive supercompilation in which the transformation strategy is based on collapsed-jungle evaluation. In penetrating the constant-factor barrier, we seem to be close to establishing a transformation technique that guarantees the eciency of the transformed program.
Experiments with the Call-by-Value Partial Evaluator
, 1998
"... Indy Indy Indy 1 Introduction innermost lazy M. Alpuente M. Falaschi G. Vidal March 4, 1998 Experiments with the Call-by-Value Partial Evaluator polyvariant polygenetic local global closedness unfolding abstraction This work has been partially supported by CICYT under grant TIC 95-0433-C03-03 and ..."
Abstract
-
Cited by 3 (3 self)
- Add to MetaCart
Indy Indy Indy 1 Introduction innermost lazy M. Alpuente M. Falaschi G. Vidal March 4, 1998 Experiments with the Call-by-Value Partial Evaluator polyvariant polygenetic local global closedness unfolding abstraction This work has been partially supported by CICYT under grant TIC 95-0433-C03-03 and by HCM project CONSOLE. DSIC, U. P. Valencia, Camino de Vera s/n, 46022 Valencia, Spain ( alpuente,gvidal @dsic.upv.es). Dip. Matematica e Informatica, U. Udine, Via delle Scienze 206, 33100 Udine, Italy (falaschi@dimi.uniud.it). This paper summarizes our experience gained using the system, a narrowing-driven partial evaluator for functional logic programs which combines in a useful and effective way the propagation of partial data structures, by means of logical variables and unification, with better opportunities for optimization thanks the functional dimension. allows the user to select either a call-by-value ( , eager) or a call-by-name (outside-in, ) narrowing strategy to construct lo...
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.
Specialization of Functional Logic Programs
"... Languages that integrate functional and logic programming with a complete operational semantics are based on narrowing, a unification-based goal-solving mechanism which subsumes the reduction principle of functional languages and the resolution principle of logic languages. In this article, we prese ..."
Abstract
-
Cited by 2 (2 self)
- Add to MetaCart
Languages that integrate functional and logic programming with a complete operational semantics are based on narrowing, a unification-based goal-solving mechanism which subsumes the reduction principle of functional languages and the resolution principle of logic languages. In this article, we present a partial evaluation scheme for functional logic languages based on an automatic unfolding algorithm which builds narrowing trees. The method is formalized within the theoretical framework established by Lloyd and Shepherdson for the partial deduction of logic programs, which we have generalized for dealing with functional computations. A generic specialization algorithm is proposed which does not depend on the eager or lazy nature of the narrower being used. To the best of our knowledge, this is the first generic algorithm for the specialization of functional logic programs. We study the semantic properties of the transformation and the conditions under which the technique terminates, is...

