Views

The Automatic Programming Server produces versions of generic procedures
that are specialized for your data structures. Views describe
how your data structures correspond to the abstract data types used in
the generic procedures.

In most programming languages, procedures are strongly typed, and any
call to the procedure must use the same types that are used in the
definition of the procedure. Thus, to reuse someone else's procedure, you
must understand the types they use and conform to those types.

With views, you only need to describe how your data correspond to the
abstract data used in the generic procedures. User interfaces are provided
that make the views for you, either automatically or based on a few
simple choices that you specify. There are two systems for making views:
one for data structure views, and one for mathematical views.

Before making views, you must
define your data structure(s).
Then click the Make a View command. The system will present menus and/or
a graphical interface to allow you to specify the view.

Data Structure Views

A data structure view describes how a user data structure matches an
abstract data type such as a linked-list. The data structure
views that are available include:

linked-list

sorted-linked-list

binary-tree

avl-tree

In general, these data structures contain pointers to other data of
the same type. If your data structure contains such pointers, the view
will be made using those pointers. Otherwise, the system will define
a "carrier record" that contains your data plus the necessary pointers.

If there is more than one choice for an item, the system will present
a menu to allow you to select the choice to be made. In some cases, the
system can make the view automatically. In other cases, it will ask
questions, such as what field to sort on and whether the sort should
be ascending or descending.

This data structure could be viewed as a linked-list using
the friend pointer as the link field. It could also be
viewed as a sorted-linked-list with sorting on
name, age, or salary.

Mathematical Views

Mathematical views describe how user data correspond to mathematical
abstract data. For example, the vector abstract type used
by the generic procedures is an (x,y) vector, but your vector type might be
a polar (r,theta) vector.

The mathematical views that are available include:

vector

line-segment

rectangle

circle

cone

sphere

When you request a mathematical view, a graphical window is created that
gives a diagram of the mathematical object and a menu of the fields
available from your data. The diagram contains labeled "buttons" for
parameters of the mathematical object. To make a view, click the mouse on
a diagram button; then click the corresponding item in the menu of your
data. A line is drawn between the selected items to show the correspondence.
When a sufficient definition of the object has been specified,
click the Done command.

As a simple example, suppose that the data type pizza
has been defined:

(pizza (diameter real)
(topping string))

To view a pizza as a circle, click the mouse on the
d button of the circle diagram, then click the
diameter in the menu of the pizza data type.
Then click the Done command. Then you can select
Make Programs to make a program to calculate, say, the area
of a pizza.