[ont.events] U of T Computer Systems Seminar - "RF-Maple: A Logic Programming Language with Functions,Types,& Concurrency"by P. Voda, Comp. Sci., UBC

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.