Re: Comments from Madrid

From: Harold Boley <>
Date: Wed, 5 Feb 97 9:50:06 MET

Hello Frank Christoph and Curritos,

if you have complete freedom wrt the order in which you add features to a
functional-logic language, you may also consider introducing non-deterministic
functions right from the beginning: they can then serve for bridging the
functional-logic gap by subsuming LP's non-deterministic relations as a special
case (namely, *characteristic* non-deterministic (non-ground) functions).
As mentioned earlier by the Madrid group, you can still maintain the efficiency
advantages for the other special case, namely, deterministic functions (if not
by static analysis, then by user *specification* of determinism to get back to
the kernel-Curry situation). Such an integration strategy is pursued by our
Relfun approach (visit

Concerning the issue of cognitive load, I'm currently writing a quite brief
pedagogic introduction to first-order FL programming, whose January draft I
can send you on request (see appended abstract).

Harold Boley
Box 2080
D-67608 Kaiserslautern

Coordinates for Declarative-Programming Education

Declarative languages such as the functional Haskell or the relational
G{\"o}del are currently taught in a somehow isolated manner besides
imperative programming concepts. In the little time available in a
typical informatics curriculum, declarative languages should instead
(1) be used as a programming platform for established subjects such as
discrete mathematics, formal languages, program specification and
correctness, databases, AI, etc. Moreover, the two declarative subfields
of functional and relational (logic) programming should (2) be treated
in an integrated manner, so as to avoid unnecessary duplication of
educational efforts. Fortunately, both (1) and (2) became possible
with the advent of functional-logic languages such as Curry,
Escher, and Relfun. To make this discussion concrete, an integration
is developed using operational variants of well-known mathematical
concepts. We employ a Relfun kernel that unifies the basic
declarative concepts: first-order relations and functions. These
are characterized by two orthogonal dimensions considered as
coordinate axes: (un)directedness and (non-)determinism. A simple running
example shows the methodological advantages of a complete coverage of
the directedness/determinism coordinates. On this integrated platform
further declarative notions such as finite domains and higher-order
operators are uniformly introduced.
Received on Wed Feb 05 1997 - 10:18:08 CET

This archive was generated by hypermail 2.3.0 : Fri Sep 20 2019 - 07:15:04 CEST