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.