Abstract
Extensions of logic and functional programming are integrated in RELFUN. Its valued clauses comprise Horn clauses (‘true’-valued) and clauses with a distinguished ‘foot’ premise (returning arbitrary values). Both the logic and functional components permit LISP-like varying-arity and higher-order operators. The DATAFUN sublanguage of the functional component is shown to be preferable to relational encodings of functions in DATALOG. RELFUN permits non-ground, non-deterministic functions, hence certain functions can be inverted using an ‘is’-primitive generalizing that of PROLOG. For function nestings a strict call-by-value strategy is employed. The reduction of these extensions to a relational sublanguage is discussed and their WAM compilation is sketched. Three examples ‘serialise’, ‘wang’, and ‘eval’) demonstrate the relational/functional style in use. The list expressions of RELFUN's LISP implementation are presented in an extended PROLOG-like syntax.
This research was supported by the BMFT under Grant ITW 8902 C4.
Preview
Unable to display preview. Download preview PDF.
References
John Backus. Can programming be liberated from the von Neumann style? A functional style and its algebra of programs. CACM, 21(8):613–641, August 1978.
P.G. Bosco, E. Giovannetti, and C. Moiso. Narrowing vs. SLD-resolution. Theoretical Computer Science, 59:3–23, 1988.
Harold Boley, Philipp Hanschke, Martin Harm, Knut Hinkelmann, Thomas Labisch, Manfred Meyer, Joerg Mueller, Thomas Oltzen, Michael Sintek, Werner Stein, and Frank Steinle. Μ CAD2NC: A declarative latheworkplanning model transforming CAD-like geometries into abstract NC programs. Technical Report Document D-91-15, University of Kaiserslautern, DFKI, November 1991.
H. Boley, P. Hanschke, K. Hinkelmann, and M. Meyer. COLAB: A Hybrid Knowledge Compilation Laboratory. 3rd International Workshop on Data, Expert Knowledge and Decisions: Using Knowledge to Transform Data into Information for Decision Support, September 1991.
Harold Boley. RELFUN: A relational/functional integration with valued clauses. SIGPLAN Notices, 21(12):87–98, December 1986.
Harold Boley. A relational/functional language and its compilation into the WAM. Technical Report SEKI SR-90-05, University of Kaiserslautern, Department of Computer Science, April 1990.
Harold Boley. Declarative operations on nets. In Fritz Lehmann, editor, Semantic Networks in Artificial Intelligence. Special Issue of Computers & Mathematics with Applications, Pergamon Press, 1992. Preprinted as: DFKI Research Report RR-90-12, Oct. 1990.
Mats Carlsson and Kenneth M. Kahn. LM-Prolog user manual. Technical Report UPMAIL 24, Uppsala University, Department of Computer Science, Revised April 1985.
D. DeGroot and G. Lindstrom, editors. Logic Programming: Functions, Relations, and Equations. Prentice-Hall, 1986.
Laurent Fribourg. Oriented equational clauses as a programming language. J. Logic Programming, 1(2):165–177, 1984.
Laurent Fribourg. SLOG: A logic programming language interpreter based on clausal superposition and rewriting. In 1985 Symposium on Logic Programming, pages 172–184. IEEE Computer Society Press, 1985.
Michael R. Genesereth and Richard Fikes in collaboration with Danny Bobrow, Piero Bonissone, Ron Brachman, Ramanathan Guha, Reed Letsinger, Valdimir Lifschitz, Bob MacGregor, John McCarthy, Peter Norvig, Ramesh Patil, and Len Schubert. Knowledge Interchange Format Version 2.2 Reference Manual. Technical Report Logic-90-4, Stanford University, Computer Science Department, Logic Group, March 1991.
Joseph A. Goguen and José Meseguer. Equality, types, modules, and (why not?) generics for logic programming. J. Logic Programming, 1(2):179–210, 1984.
John W. Lloyd. Foundations of Logic Programming. Springer-Verlag, Berlin, Heidelberg, New York, 1987.
[MAE+62] John McCarthy, Paul W. Abrahams, Daniel J. Edwards, Timothy P. Hart, and Michael I. Levin. LISP 1.5 programmer's manual. MIT Press, Cambridge, Mass., 1962.
Gopalan Nadathur and Dale Miller. Higher-order Horn clauses. JACM, 37(4):777–814, October 1990.
M. J. O'Donnell. Equational Logic as a Programming Language. MIT Press, Cambridge, Mass., 1985.
Luís Moniz Pereira and António Porto. Pure Lisp in pure Prolog. Logic Programming Newsletter 3, Summer 1982. Universidade Nova de Lisboa, Departamento de Informática.
Lawrence C. Paulson and Andrew W. Smith. Logic programming, functional programming, and inductive definitions. In P. Schroeder-Heister, editor, Extensions of Logic Programming, pages 283–309, Berlin, Heidelberg, New York, 1991. Springer-Verlag. LNCS 475.
Michael Sintek. Generalized indexing methods for higher-order PROLOG extensions: A case study with the RELFUN WAM. Technical report, University of Kaiserslautern, DFKI, Forthcoming 1992.
David H. D. Warren. Higher-order extensions to PROLOG: Are they needed? Machine Intelligence, 10:441–454, 1982.
David H. D. Warren, Luis M. Pereira, and Fernando Pereira. Prolog — the language and its implementation compared with Lisp. SIGPLAN Notices, 12(8):109–115, August 1977. Special Issue.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1992 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Boley, H. (1992). Extended logic-plus-functional Programming. In: Eriksson, L.H., Hallnäs, L., Schroeder-Heister, P. (eds) Extensions of Logic Programming. ELP 1991. Lecture Notes in Computer Science, vol 596. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0013603
Download citation
DOI: https://doi.org/10.1007/BFb0013603
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-55498-1
Online ISBN: 978-3-540-47114-1
eBook Packages: Springer Book Archive