Chapter 10

[*]Ex 10.1
Deproceduring and dereferencing (not weakly-dereferencing).
[*]Ex 10.2
None.
[*]Ex 10.3

(a)
Yes.
(b)
No (cannot widen).
(c)
No (cannot dereference).
(d)
No (cannot row).
(e)
No (cannot dereference).
(f)
No (cannot unite after rowing).

[*]Ex 10.4

(a)
Row-display, structure-display, collateral clause.
(b)
Parallel clause.
(c)
Case clause.
(d)
Conformity clause.
(e)
Conditional clause.
(f)
Closed clause or enclosed clause.

[*]Ex 10.5

(a)
Weak.
(b)
Meek.
[*]Ex 10.6

(a)
6 (4 denotations, 1 applied-identifier, 1 closed clause).
(b)
5 (1 denotation, 3 applied-identifiers, 1 call).
(c)
5 (1 denotation, 3 applied-identifiers, 1 slice).
(d)
(1 denotation, 1 closed clause, 1 cast, 1 applied-identifier).

[*]Ex 10.7
The identifier of a structure or a name referring to a structure.
[*]Ex 10.8
A selection.
[*]Ex 10.9

(a)
2.
(b)
3.
(c)
3.
(d)
4.

[*]Ex 10.10

(a)
A primary.
(b)
A primary.
(c)
A secondary.
(d)
A primary.
(e)
A primary.
(f)
Tertiary.
(g)
Enclosed clause.
(h)
A quaternary.
(i)
It is not a unit.
(j)
A quaternary.
[*]Ex 10.11

(a)
2 denotations + 2 applied-identifiers = 4 primaries. 1 closed clause. 3 formulæ = 3 tertiaries.
(b)
1 denotation + 3 applied-identifiers = 4 primaries. 3 formulæ = 3 tertiaries.
(c)
2 applied-identifiers + 1 call = 3 primaries.
(d)
3 denotations + 1 applied-identifier + 1 slice = 5 primaries.
(e)
2 denotations + 3 applied-identifiers = 5 primaries; 1 conditional clause = 1 enclosed clause, 2 formulæ = 2 tertiaries, 1 assignment = 1 quaternary.
(f)
2 denotations + 5 applied-identifiers = 7 primaries, 1 formula = 1 tertiary, 1 assignation = 1 quaternary, 1 case clause + 1 conditional clause = 2 enclosed clauses.
(g)
2 denotations + 2 applied-identifiers = 4 primaries, 2 assignments = 2 quaternaries, 1 parallel clause = 1 enclosed clause.

[*]Ex 10.12

(a)
The conditional clause can yield a value of mode REF INT or REF REAL. In a firm context, these can be coerced to INT and REAL. Thus the INT is widened to REAL and the balanced clause yields a value of mode REAL.
(b)
The conditional clause in a soft context will yield REF INT or REF REAL. Neither can be coerced to the other in a strong context, so the clause cannot be balanced. The error message from the compiler arises from the coercions applied in a strong context for the attempted balancing.
(c)
The conformity clause yields INT or REAL. In a strong context, INT can be widened to REAL. Thus the balanced clause will yield REAL.
(d)
The conditional clause yields INT or whatever. In a strong context, SKIP will yield INT. Thus the balanced clause yields INT. However, the result will be undefined if the SKIP is used in the assignment.

[*]Ex 10.13

(a)
Yes.
(b)
Yes.
(c)
No.
(d)
No.
(e)
Yes.
(f)
Yes.
(g)
Yes.
(h)
No.
(i)
Yes! It's an example in the “Revised Report”.

Sian Mountbatten 2012-01-19