The relation between logic and functional languages: A survey
Journal of Logic Programming
The craft of Prolog
HILOG: a foundation for higher-order logic programming
Journal of Logic Programming
Analyzing logic programs with dynamic scheduling
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Prolog: the standard: reference manual
Prolog: the standard: reference manual
An Assertion Language for Constraint Logic Programs
Analysis and Visualization Tools for Constraint Programming, Constrain Debugging (DiSCiPl project)
A New Module System for Prolog
CL '00 Proceedings of the First International Conference on Computational Logic
BABEL: A Functional and Logic Programming Language based on Constructor Discipline and Narrowing
Proceedings of the International Workshop on Algebraic and Logic Programming
Science of Computer Programming - Special issue: Static analysis symposium (SAS 2003)
Adding constraint solving to mercury
PADL'06 Proceedings of the 8th international conference on Practical Aspects of Declarative Languages
Hiord: a type-free higher-order logic programming language with predicate abstraction
ASIAN'04 Proceedings of the 9th Asian Computing Science conference on Advances in Computer Science: dedicated to Jean-Louis Lassez on the Occasion of His 5th Cycle Birthday
High-level languages for small devices: a case study
CASES '06 Proceedings of the 2006 international conference on Compilers, architecture and synthesis for embedded systems
A practical type analysis for verification of modular prolog programs
PEPM '08 Proceedings of the 2008 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Functions and Lazy Evaluation in Prolog
Electronic Notes in Theoretical Computer Science (ENTCS)
Comparing tag scheme variations using an abstract machine generator
Proceedings of the 10th international ACM SIGPLAN conference on Principles and practice of declarative programming
Concurrency, Graphs and Models
A Semantic Web Reasoner for Rules, Equations and Constraints
RR '08 Proceedings of the 2nd International Conference on Web Reasoning and Rule Systems
Annotation Algorithms for Unrestricted Independent And-Parallelism in Logic Programs
Logic-Based Program Synthesis and Transformation
Towards a Complete Scheme for Tabled Execution Based on Program Transformation
PADL '09 Proceedings of the 11th International Symposium on Practical Aspects of Declarative Languages
Communications of the ACM
Monadic constraint programming
Journal of Functional Programming
Multi-paradigm declarative languages
ICLP'07 Proceedings of the 23rd international conference on Logic programming
PADL'08 Proceedings of the 10th international conference on Practical aspects of declarative languages
An overview of ciao and its design philosophy
Theory and Practice of Logic Programming - Prolog Systems
Modular extensions for modular (logic) languages
LOPSTR'11 Proceedings of the 21st international conference on Logic-Based Program Synthesis and Transformation
Hi-index | 0.02 |
Nondeterminism and partially instantiated data structures give logic programming expressive power beyond that of functional programming. However, functional programming often provides convenient syntactic features, such as having a designated implicit output argument, which allow function call nesting and sometimes results in more compact code. Functional programming also sometimes allows a more direct encoding of lazy evaluation, with its ability to deal with infinite data structures. We present a syntactic functional extension, used in the Ciao system, which can be implemented in ISO-standard Prolog systems and covers function application, predefined evaluable functors, functional definitions, quoting, and lazy evaluation. The extension is also composable with higher-order features and can be combined with other extensions to ISO-Prolog such as constraints. We also highlight the features of the Ciao system which help implementation and present some data on the overhead of using lazy evaluation with respect to eager evaluation.