6.1.3 A Few Examples of Array and Record Use

Array and record types make composing readable Sisal programs easy and convenient. The syntax rules for using them correctly arise immediately from the semantic rules we have already touched on: every Sisal statement is an expression, and all expressions return specific values of specific types. Consider the following example:
let x_diff := x[1] - x[2];
    y_diff := y[1] - y[2];
    xd_sq := x_diff * x_diff;
    yd_sq := y_diff * Y_diff
in  sqrt( xd_sq + yd_sq )
end let
This is the calculation of the magnitude of separation of two two-space vectors. The vectors are named x and y, and their components are indexed in the usual way, using square brackets to separate the index expressions from the value names. Alternatively, we could represent the vectors as records, whose fields contain the components, and the calculation would them be as follows:
let x_diff := v1.x - v2.x;
    y_diff := v1.y - v2.y;
    xd_sq := x_diff * x_diff;
    yd_sq := y_diff * Y_diff
in  sqrt( xd_sq + yd_sq )
end let
Here we have the two records, named v1 and v2, with fields in each named x and y. The record notation allows us to name the fields, and refer to them by use of the record and field names separated by a period. A third alternative we could use would allow a combination of these two notations, as follows:
let x_diff := vectors[1].x - vectors[2].x;
    y_diff := vectors[1].y - vectors[2].y;
    xd_sq := x_diff * x_diff;
    yd_sq := y_diff * Y_diff
in  sqrt( xd_sq + yd_sq )
end let
Here we have an array, named vectors, whose elements are records. We index the individual records as array elements, and their components as record fields. But both these examples assume aggregates that already exist. How does one go about creating them?



Previous Section



Next Section



Table of Contents




If you have any questions about this page, or want more information about the Sisal Language Project, contact:
John Feo at (510) 422-6389 or feo@diego.llnl.gov, or Tom DeBoni at (510) 423-3793 or deboni@llnl.gov.

The Sisal Language Project has been approved as a Designated Unclassified Subject Area (DUSA) K19222, as of 07 August, 1991.

LLNL Disclaimer
UCRL-MI-122601