BABEL: A Functional and Logic Programming Language based on Constructor Discipline and Narrowing

We present the experimental language BABEL, designed to achieve integration of functional and logic programming in a simple, flexible, and mathematically well founded way. The language relies on a constructor discipline and the use of narrowing to englobe rewriting and SLD-resolution. It is first-order, type-free and has a lazy operational semantics which supports infinite data structures and is sound w.r.t. a declarative semantics based on Scott domains. The paper includes BABEL's syntactical and semantical specification, some mathematical results on the semantics, and programming examples.

[1]  Glynn Winskel,et al.  Using Information Systems to Solve Recursive Domain Equations Effectively , 1984, Semantics of Data Types.

[2]  Corrado Moiso,et al.  Refined Strategies for Semantic Unification , 1987, TAPSOFT, Vol.2.

[3]  G. Huet,et al.  Equations and rewrite rules: a survey , 1980 .

[4]  Zohar Manna,et al.  TABLOG: A New Approach To Logic Programming , 1986, Logic Programming: Functions, Relations, and Equations.

[5]  J. A. Robinson,et al.  A Machine-Oriented Logic Based on the Resolution Principle , 1965, JACM.

[6]  Ronald V. Book,et al.  Formal language theory : perspectives and open problems , 1980 .

[7]  Corrado Moiso,et al.  A Complete Semantic Characterization of K-Leaf: A Logic Language with Partial Functions , 1987, SLP.

[8]  Michael J. O'Donnell,et al.  Equational Logic as a Programming Language , 1985, Logic of Programs.

[9]  J. W. Lloyd,et al.  Foundations of logic programming; (2nd extended ed.) , 1987 .

[10]  José Meseguer,et al.  EQLOG: Equality, Types, and Generic Modules For Logic Programming , 1986, Logic Programming: Functions, Relations, and Equations.

[11]  Robin Milner,et al.  A Theory of Type Polymorphism in Programming , 1978, J. Comput. Syst. Sci..

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

[13]  Jia-Huai You,et al.  FUNLOG: A Computational Model Integrating Logic Programming and Functional Programming , 1986, Logic Programming: Functions, Relations, and Equations.

[14]  Edsger W. Dijkstra,et al.  A Discipline of Programming , 1976 .

[15]  Richard S. Bird,et al.  Introduction to functional programming , 1988, Prentice Hall International series in computer science.

[16]  M. H. van Emden,et al.  Logic Programming with Equations , 1987, J. Log. Program..

[17]  Giorgio Levi,et al.  The Relation between Logic and Functional Languages: A Survey , 1986, J. Log. Program..

[18]  Pascal Van Hentenryck,et al.  Extended Unification Algorithms for the Integration of Functional Programming into Logic Programming , 1987, J. Log. Program..

[19]  Jean-Marie Hullot,et al.  Canonical Forms and Unification , 1980, CADE.

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