Programming in Prolog (2nd ed.)
Programming in Prolog (2nd ed.)
A Machine-Oriented Logic Based on the Resolution Principle
Journal of the ACM (JACM)
An Efficient Unification Algorithm
ACM Transactions on Programming Languages and Systems (TOPLAS)
Functional Programming
A relational language for parallel programming
FPCA '81 Proceedings of the 1981 conference on Functional programming languages and computer architecture
Prolog - the language and its implementation compared with Lisp
Proceedings of the 1977 symposium on Artificial intelligence and programming languages
ACM '79 Proceedings of the 1979 annual conference
Combinatorial Algorithms: Theory and Practice
Combinatorial Algorithms: Theory and Practice
Multiparadigm research: a new direction of language design
ACM SIGPLAN Notices
Equational logic programming: an extension to equational programming
POPL '86 Proceedings of the 13th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Making control and data flow in logic programs explicit
LFP '84 Proceedings of the 1984 ACM Symposium on LISP and functional programming
Hi-index | 0.00 |
A novel lazy evaluation mechanism, pattern-driven lazy reduction, is developed that serves as a unifying evaluation mechanism for both functional and logic programs. The reduction of a function call can be viewed as “semantically” unifying the function call with the left hand side of a defining equation, and applying the unifier to the right hand side. Lazy reduction is achieved by the pattern which the function call matches against. Function reductions are actually “driven” by patterns in this sense. It is shown that this evaluation mechanism works well for both functional programs and logic programs that involve “executable” functions. As a result, logic programs can be enhanced with (1) the availability of a functional computing environment where there is no notion of backtracking, thus alleviating the degree of control difficulties typically encountered in logic programs, and (2) the ability to terminate “infinite computations” without the introduction of complex control issues at the user-level. On the other hand, functional programs can be equipped with the power of logic programming languages, e.g., Prolog.