A unified computation model for functional and logic programming

We propose a new computation model which combines the operational principles of functional languages (reduction), logic languages (non-deterministic search for solutions), and integrated functional logic languages (residuation and narrowing). This computation model combines efficient evaluation principles of functional languages with the problem-solving capabilities of logic programming. Since the model allows the delay of function calls which are not sufficiently instantiated, it also supports a concurrent style of programming. We provide soundness and completeness results and show that known evaluation principles of functional logic languages are particular instances of this model. Thus, our model is a suitable basis for future declarative programming languages.

[1]  Michael Hanus,et al.  Analysis of Residuating Logic Programs , 1995, J. Log. Program..

[2]  M. Hanus,et al.  Curry: A Truly Functional Logic Language , 1995 .

[3]  Patrick Lincoln,et al.  Le Fun: Logic, Equations and Functions , 1987, SLP.

[4]  Rita Loogen,et al.  Dynamic Detection of Determinism in Functional Languages , 1991, Theor. Comput. Sci..

[5]  Corrado Moiso,et al.  Kernel-LEAF: A Logic plus Functional Language , 1991, J. Comput. Syst. Sci..

[6]  Michael Hanus,et al.  Compiling Logic Programs with Equality , 1990, PLILP.

[7]  Rita Loogen,et al.  Lazy Narrowing in a Graph Machine , 1990, ALP.

[8]  Uday S. Reddy,et al.  Narrowing as the Operational Semantics of Functional Languages , 1985, SLP.

[9]  Rita Loogen,et al.  A Demand Driven Computation Strategy for Lazy Narrowing , 1993, PLILP.

[10]  Michael Hanus,et al.  The Integration of Functions into Logic Programming: From Theory to Practice , 1994, J. Log. Program..

[11]  Mario Rodríguez-Artalejo,et al.  A Rewriting Logic for Declarative Programming , 1996, ESOP.

[12]  John W. Lloyd,et al.  Combining Functional and Logic Programming Languages , 1994, ILPS.

[13]  Michael Hanus,et al.  A Parallel Narrowing Strategy , 1996 .

[14]  Simon L. Peyton Jones,et al.  The Implementation of Functional Programming Languages , 1987 .

[15]  John W. Lloyd,et al.  Declarative Programming in Escher , 1995 .

[16]  Rachid Echahed,et al.  A needed narrowing strategy , 2000, JACM.

[17]  Christian Prehofer,et al.  Higher-order narrowing with definitional trees , 1999, Journal of Functional Programming.

[18]  Jan A. Bergstra,et al.  Conditional Rewrite Rules: Confluence and Termination , 1986, J. Comput. Syst. Sci..

[19]  Juan José Moreno-Navarro,et al.  Logic Programming with Functions and Predicates: The Language BABEL , 1992, J. Log. Program..

[20]  Hassan Aït-Kaci,et al.  An Overview of LIFE , 1990, East/West Database Workshop.

[21]  Corrado Moiso,et al.  Narrowing vs. SLD-Resolution , 1988, Theor. Comput. Sci..

[22]  Michael Hanus,et al.  Improving Control of Logic Programs by Using Functional Logic Languages , 1992, PLILP.

[23]  Michael Hanus,et al.  Efficient Translation of Lazy Functional Logic Programs into Prolog , 1995, LOPSTR.

[24]  Michael Hanus,et al.  Combining Lazy Narrowing and Simplification , 1994, PLILP.

[25]  Gert Smolka The Oz Programming Model , 1996 .

[26]  Laurent Fribourg,et al.  SLOG: A Logic Programming Language Interpreter Based on Clausal Superposition and Rewriting , 1985, SLP.

[27]  Lee Naish,et al.  Adding equations to NU-Prolog , 1991, PLILP.

[28]  Sergio Antoy Definitional Trees , 1992, ALP.

[29]  Jean-Pierre Jouannaud,et al.  Rewrite Systems , 1991, Handbook of Theoretical Computer Science, Volume B: Formal Models and Sematics.

[30]  Rachid Echahed,et al.  Design and Implementation of a Generic, Logic and Functional Programming Language , 1986, ESOP.