RF-Maple: A Logic Programming Language with Functions, Types & Concurrency

ID
TR-84-08
Authors
Paul J. Voda and Benjamin Yu
Publishing date
April 1984
Abstract
Currently there is a wide interest in the combination of functional programs with logic programs. The advantage is that both the compostion of functions and non-determinism of relations can be obtained. The language RF-Maple is an attempt to combine logic programming style with functional programming style. "RF" stands for "Relational and Functional". It is a true union of a relational programming language R-Maple and a functional programming language F-Maple. R-Maple is a concurrent relational logic programming language which tries to strike a balance between control and meaning. Sequential and parallel execution of programs can be specified in finer details than in Concurrent Prolog. R-Maple uses explicit quantifiers and has negation. As a result, the declarative reading of R-Maple programs is never compromised by the cuts and commits of both Prologs. F-Maple is a very simple typed functional programming language (it has only four constructs) which was designed as an operating system at the same time. It is a syntactically extensible language where the syntax of types and functions is entirely under the programmer's control. In combining the two concepts of R-Maple and F-Maple producing RF-Maple, the readability of programs and the speed of execution are improved. The latter is due to the fact that many relations are functional and therefore, do not require backtracking. We believe its power as well as its expressiveness and ease of use go a little beyond the possibilities of the currently available languages.