Foundations of logic programming
Foundations of logic programming
Programming in Prolog (2nd ed.)
Programming in Prolog (2nd ed.)
Denotational and operational semantics for Prolog
Journal of Logic Programming
Automatic mode inference for logic programs
Journal of Logic Programming
Functional computations in logic programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
A Machine-Oriented Logic Based on the Resolution Principle
Journal of the ACM (JACM)
Theory of Relational Databases
Theory of Relational Databases
Programming with non-determinism in deductive databases
Annals of Mathematics and Artificial Intelligence
A controlling scheme for Prolog through count terms
Computer Languages
Hi-index | 0.00 |
Logic programs can often be inefficient. The usual solution to this problem has been to return some control to the user in the form of impure language features like cut. The authors argue that it is not necessary to resort to such impure features for efficiency. This point is illustrated by considering how most of the common uses of cut can be eliminated from Prolog source programs, relying on static analysis to generate them at compile time. Three common situations where the cut is used are considered. Static analysis techniques are given to detect such situations, and applicable program transformations are described. Two language constructs, firstof and oneof, for situations involving don't-care nondeterminism, are suggested. These constructs have better declarative readings than the cut and extend better to parallel evaluation strategies. Together, these proposals result in a system where users need rely much less on cuts for efficiency, thereby promoting a purer programming style without sacrificing efficiency.