voula@utcsri.UUCP (Voula Vanneli) (04/03/85)
UNIVERSITY OF TORONTO
DEPARTMENT OF COMPUTER SCIENCE
(GB = Galbraith Bldg., 35 St. George)
COMPUTER SYSTEMS SEMINAR - Tuesday, April 9, 3 pm, GB 420
Professor Paul Voda
Dept. of Computer Science, U.B.C.
"RF-Maple: A Logic Programming Language with Functions,
Types and Concurrency"
Abstract
RF-Maple is designed as a typed functional programming
language. Functions yielding boolean values are treated as
predicates. Since the propositional connectives (and, or,
and not) are definable using if-then-else and existential
quantifiers are supplied as primitive, we obtain the full
first-order predicate calculus (in the form of a so-called
term logic). Functions of RF-Maple are computed by lazy
evaluation and have all arguments input only. The behaviour
of logic programming languages comes from the non- determin-
ism of predicates which are allowed to generate output
values through variables in the arguments (this is sometimes
referred to as logical variable). The relational part of
RF-Maple allows to express the control by having both
sequential and parallel binary connectives (and, or) as well
as a way of indicating the "assignment" to output variables.
Yet the semantics is rigidly defined as that of the first
order predicate calculus. In addition to this, the ML-like
parameterized types of RF-Maple are defined with the help of
grammars. The use of grammars gives user-definable syntax
to both function invocations (headings) and data type con-
structors. RF-Maple has no i/o operations and it has been
designed as integrated with its own environment (i.e. the
operating system). Construction of programs as well as the
input of both data and commands is done with the help of a
structure editor driven by menus taken from the user defined
grammars of data types and function headings.