A metacircular evaluator for a logical extension of Scheme

We define a computational model for a logical extension of Scheme, and give a metacircular evaluator for it. This minimal extension incorporates two new features only, i.e. logical variables and clause expressions, which can be used to define predicates in exactly the same way as lambda expressions can be used to define functions.Higher-order properties of Scheme are preserved: predicates can be passed to and returned from function applications. Predicate applications can appear as terms in functions. On the other hand, function applications can appear as terms in predicates, and can be formal as well as actual arguments, but only as long as they can be evaluated according to the usual Scheme semantics prohibiting access to unbound variables (except for constructor applications).

[1]  John Darlington,et al.  The Unification of Functional and Logic Languages , 1986, Logic Programming: Functions, Relations, and Equations.

[2]  Philip R. Thrift Common Lisp relations: an extension of Lisp for logic programming , 1988, Proceedings. 1988 International Conference on Computer Languages.

[3]  Amitabh Srivastava,et al.  An(other) Integration of Logic and Functional Programming , 1985, SLP.

[4]  Christopher T. Haynes,et al.  Logic Continuations , 1986, J. Log. Program..

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

[6]  Uday S. Reddy,et al.  On the Relationship Between Logic and Functional Languages , 1986, Logic Programming: Functions, Relations, and Equations.

[7]  Gerald J. Sussman,et al.  Structure and interpretation of computer programs , 1985, Proceedings of the IEEE.

[8]  Pierre E. Bonzon An Environment Model for the Integration of Logic and Functional Programming , 1987, IJCAI.