Conditional rewrite rules: Confluence and termination
Journal of Computer and System Sciences
Program derivation in type theory: A partitioning problem
Computer Languages
Computational semantics of term rewriting systems
Algebraic methods in semantics
Theoretical Computer Science - International Joint Conference on Theory and Practice of Software Development, P
The craft of Prolog
Kernel-LEAF: a logic plus functional language
Journal of Computer and System Sciences
Handbook of theoretical computer science (vol. B)
Logic programming with functions and predicates: the language Babel
Journal of Logic Programming
Nondeterministic algebraic specifications and nonconfluent term rewriting
Journal of Logic Programming
Programming in equational logic: beyond strong sequentiality
Information and Computation - Special issue: selections from 1990 IEEE symposium on logic in computer science
Lazy narrowing: strong completeness and eager variable elimination
TAPSOFT '95 Selected papers from the 6th international joint conference on Theory and practice of software development
Call by need computations to root-stable form
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Term rewriting and all that
A deterministic lazy narrowing calculus
Journal of Symbolic Computation
Strongly sequential and inductively sequential term rewriting systems
Information Processing Letters
Journal of the ACM (JACM)
A Discipline of Programming
Typed Higher-Order Narrowing without Higher-Order Strategies
FLOPS '99 Proceedings of the 4th Fuji International Symposium on Functional and Logic Programming
A Complete Narrowing Calculus for Higher-Order Functional Logic Programming
PLILPS '95 Proceedings of the 7th International Symposium on Programming Languages: Implementations, Logics and Programs
A Demand Driven Computation Strategy for Lazy Narrowing
PLILP '93 Proceedings of the 5th International Symposium on Programming Language Implementation and Logic Programming
Compiling Multi-Paradigm Declarative Programs into Prolog
FroCoS '00 Proceedings of the Third International Workshop on Frontiers of Combining Systems
Higher-Order Narrowing with Definitional Trees
RTA '96 Proceedings of the 7th International Conference on Rewriting Techniques and Applications
Term Rewriting, French Spring School of Theoretical Computer Science, Advanced Course
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
Constructor-based conditional narrowing
Proceedings of the 3rd ACM SIGPLAN international conference on Principles and practice of declarative programming
Leftmost outside-in narrowing calculi
Journal of Functional Programming
An overview of the Sloth2005 curry system: system description
Proceedings of the 2005 ACM SIGPLAN workshop on Curry and functional logic programming
Lazy Context Cloning for Non-Deterministic Graph Rewriting
Electronic Notes in Theoretical Computer Science (ENTCS)
Type-level Computation Using Narrowing in Ωmega
Electronic Notes in Theoretical Computer Science (ENTCS)
Proceedings of the 9th ACM SIGPLAN international conference on Principles and practice of declarative programming
A simple rewrite notion for call-time choice semantics
Proceedings of the 9th ACM SIGPLAN international conference on Principles and practice of declarative programming
Higher-Order Proof Construction Based on First-Order Narrowing
Electronic Notes in Theoretical Computer Science (ENTCS)
Inductively Sequential Term-Graph Rewrite Systems
ICGT '08 Proceedings of the 4th international conference on Graph Transformations
Set functions for functional logic programming
PPDP '09 Proceedings of the 11th ACM SIGPLAN conference on Principles and practice of declarative programming
Free theorems for functional logic programs
Proceedings of the 4th ACM SIGPLAN workshop on Programming languages meets program verification
Communications of the ACM
Programming with narrowing: A tutorial
Journal of Symbolic Computation
Multi-paradigm declarative languages
ICLP'07 Proceedings of the 23rd international conference on Logic programming
Transformation and debugging of functional logic programs
A 25-year perspective on logic programming
Transforming functional logic programs into monadic functional programs
WFLP'10 Proceedings of the 19th international conference on Functional and constraint logic programming
From functional logic programs to purely functional programs preserving laziness
IFL'08 Proceedings of the 20th international conference on Implementation and application of functional languages
Declarative programming with function patterns
LOPSTR'05 Proceedings of the 15th international conference on Logic Based Program Synthesis and Transformation
Overlapping rules and logic variables in functional logic programs
ICLP'06 Proceedings of the 22nd international conference on Logic Programming
A virtual machine for functional logic computations
IFL'04 Proceedings of the 16th international conference on Implementation and Application of Functional Languages
On the correctness of bubbling
RTA'06 Proceedings of the 17th international conference on Term Rewriting and Applications
Compiling a functional logic language: the basic scheme
FLOPS'12 Proceedings of the 11th international conference on Functional and Logic Programming
Are needed redexes really needed?
Proceedings of the 15th Symposium on Principles and Practice of Declarative Programming
Hi-index | 0.02 |
Recent advances in the foundations and the implementations of functional logic programming languages originate from far-reaching results on narrowing evaluation strategies. Narrowing is a computation similar to rewriting which yields substitutions in addition to normal forms. In functional logic programming, the classes of rewrite systems to which narrowing is applied are, for the most part, subclasses of the constructor-based, possibly conditional, rewrite systems. Many interesting narrowing strategies, particularly for the smallest subclasses of the constructor-based rewrite systems, are generalizations of well-known rewrite strategies. However, some strategies for larger non-confluent subclasses have been developed just for functional logic computations. This paper discusses the elements that play a relevant role in evaluation strategies for functional logic computations, describes some important classes of rewrite systems that model functional logic programs, shows examples of the differences in expressiveness provided by these classes, and reviews the characteristics of narrowing strategies proposed for each class of rewrite systems.