Kernel-LEAF: a logic plus functional language
Journal of Computer and System Sciences
Handbook of theoretical computer science (vol. B)
Partial evaluation and automatic program generation
Partial evaluation and automatic program generation
Tutorial on specialisation of logic programs
PEPM '93 Proceedings of the 1993 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Tutorial notes on partial evaluation
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Deductive and inductive synthesis of equational programs
Journal of Symbolic Computation - Special issue on automatic programming
Specialization of lazy functional logic programs
PEPM '97 Proceedings of the 1997 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
A unified computation model for functional and logic programming
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A unifying view of functional and logic program specialization
ACM Computing Surveys (CSUR) - Special issue: electronic supplement to the September 1998 issue
Partial evaluation of functional logic programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Strongly sequential and inductively sequential term rewriting systems
Information Processing Letters
Journal of the ACM (JACM)
The narrowing-driven approach to functional logic program specialization
New Generation Computing - Partial evaluation and program transformation
A residualizing semantics for the partial evaluation of functional logic programs
Information Processing Letters
A Transformation System for Lazy Functional Logic Programs
FLOPS '99 Proceedings of the 4th Fuji International Symposium on Functional and Logic Programming
Partial Deduction and Driving are Equivalent
PLILP '94 Proceedings of the 6th International Symposium on Programming Language Implementation and Logic Programming
A Self-Applicable Partial Evaluator for Term Rewriting Systems
TAPSOFT '89 Proceedings of the International Joint Conference on Theory and Practice of Software Development, Volume 2: Advanced Seminar on Foundations of Innovative Software Development II and Colloquium on Current Issues in Programming Languages
Compiling Multi-Paradigm Declarative Programs into Prolog
FroCoS '00 Proceedings of the Third International Workshop on Frontiers of Combining Systems
Occam's Razor in Metacompuation: the Notion of a Perfect Process Tree
WSA '93 Proceedings of the Third International Workshop on Static Analysis
ASTRE: Towards a Fully Automated Program Transformation System
RTA '95 Proceedings of the 6th International Conference on Rewriting Techniques and Applications
A Roadmap to Metacomputation by Supercompilation
Selected Papers from the Internaltional Seminar on Partial Evaluation
Proceedings of the Third International Conference on Algebraic and Logic Programming
Optimal Non-deterministic Functional Logic Computations
ALP '97-HOA '97 Proceedings of the 6th International Joint Conference on Algebraic and Logic Programming
The Universal Resolving Algorithm: Inverse Computation in a Functional Language
MPC '00 Proceedings of the 5th International Conference on Mathematics of Program Construction
Lazy Narrowing in a Graph Machine
Proceedings of the Second International Conference on Algebraic and Logic Programming
Efficient Translation of Lazy Functional Logic Programs into Prolog
LOPSTR '95 Proceedings of the 5th International Workshop on Logic Programming Synthesis and Transformation
An implementation of narrowing strategies
Proceedings of the 3rd ACM SIGPLAN international conference on Principles and practice of declarative programming
Higher-order narrowing with definitional trees
Journal of Functional Programming
Rules + strategies for transforming lazy functional logic programs
Theoretical Computer Science
An offline partial evaluator for curry programs
Proceedings of the 2005 ACM SIGPLAN workshop on Curry and functional logic programming
Fast narrowing-driven partial evaluation for inductively sequential programs
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
Lazy Context Cloning for Non-Deterministic Graph Rewriting
Electronic Notes in Theoretical Computer Science (ENTCS)
Narrowing and Rewriting Logic: from Foundations to Applications
Electronic Notes in Theoretical Computer Science (ENTCS)
Extra Variables Can Be Eliminated from Functional Logic Programs
Electronic Notes in Theoretical Computer Science (ENTCS)
A Modular Equational Generalization Algorithm
Logic-Based Program Synthesis and Transformation
Electronic Notes in Theoretical Computer Science (ENTCS)
Programming with narrowing: A tutorial
Journal of Symbolic Computation
Transformation and debugging of functional logic programs
A 25-year perspective on logic programming
On the correctness of bubbling
RTA'06 Proceedings of the 17th international conference on Term Rewriting and Applications
Hi-index | 0.00 |
Many functional logic languages are based on narrowing, a unification-based goal-solving mechanism which subsumes the reduction mechanism of functional languages and the resolution principle of logic languages. Needed narrowing is an optimal evaluation strategy which constitutes the basis of modern (narrowing-based) lazy functional logic languages. In this work, we present the fundamentals of partial evaluation in such languages. We provide correctness results for partial evaluation based on needed narrowing and show that the nice properties of this strategy are essential for the specialization process. In particular, the structure of the original program is preserved by partial evaluation and, thus, the same evaluation strategy can be applied for the execution of specialized programs. This is in contrast to other partial evaluation schemes for lazy functional logic programs which may change the program structure in a negative way. Recent proposals for the partial evaluation of declarative multi-paradigm programs use (some form of) needed narrowing to perform computations at partial evaluation time. Therefore, our results constitute the basis for the correctness of such partial evaluators.