Programs and Datatypes
We are programmers, in the sense that it is our concern to improve the process of program construction. Therefore we want to answer questions like: What is programming, why is it so difficult and error-prone, and how can we learn what is needed to make the process more manageable? In the following we shall address these issues in a relational framework. Section 10.1 gives an introductory overview explaining the background to our approach. Section 10.2 shows how we deal with (recursive and non-recursive) datatypes in the relational framework. Section 10.3 discusses programs in this context, concentrating on a class of programs characterized by relational equations of a specific but quite general shape. Program termination is the subject of Section 10.4. Finally, Section 10.5 briefly touches on the design and execution of (terminating) programs. For a more extensive treatment see [Doornbos 1996].
KeywordsFusion Rule Relation Algebra Parse Tree Recursive Call Relational Framework
Unable to display preview. Download preview PDF.
- 1.Square brackets denote lists; x 〈S〉 y denotes that relation S relates x to y.Google Scholar
- 2.We render program specifications by relations with input from the left and output to the right. As a consequence, the relational rendering of a function has the function argument on the left.Google Scholar
- 3.The use of the word “junk” here should not be confused with the name “junc” given to the co-generator of disjoint sum. The latter is short for “junction” and the former means waste or trash.Google Scholar
- 4.According to Fokkinga [Fokkinga 1992], the term hylo(morphism) was coined by Erik Meijer.Google Scholar