A set constructor has the form:
S{e_1, ..., e_n}
where S is a set type and the e's are expressions or ranges
of the form lo..hi. The constructor denotes a value of type
S containing the listed values and the values in the listed ranges.
The e's, lo's, and hi's must be assignable
to the element type of S.
An array constructor has the form:
A{e_1, ..., e_n}
where A is an array type and the e's are expressions.
The constructor denotes a value of type A containing the listed
elements in the listed order. The e's must be assignable to
the element type of A. This means that if A is a
multi-dimensional array, the e's must themselves be array-valued
expressions.
If A is a fixed array type and n is at least 1, then e_n can be followed by ", .." to indicate that the value of e_n will be replicated as many times as necessary to fill out the array. It is a static error to provide too many or too few elements for a fixed array type.
A record constructor has the form:
R{Bindings}
where R is a record type and Bindings is a list of keyword
or positional bindings, exactly as in a
procedure call.
The list of bindings is rewritten to fit the list of fields and defaults
of R, exactly as for a procedure call; the record field names
play the role of the procedure formal parameters. The expression
denotes a value of type R whose field values are specified by
the rewritten binding.
The rewritten binding must bind only field names and must bind each field name exactly once. Each expression in the binding must be assignable to the type of the corresponding record field.
m3-request@src.dec.com
Last modified on Wed Apr 3 09:39:10 PST 1996 by heydon
modified on Mon Apr 18 14:02:28 PDT 1994 by kalsow