Conformant arrays specify the actual bounds of each dimension of the array as bound identifiers which are a kind of read-only variable. The index type of the actual array parameter must be compatible with the type in the conform ant array's index type specification. The smallest and largest values of that index type must lie within the closed interval of the type in the index type specification. The component types must be the same, and if the component type of the conformant-array parameter is another conformant-array parameter then the component type of the actual array parameter must conform to it. 

A conformant-array parameter may be packed only in its last dimension. Actual parameters to value conformant-array parameters may be variables or strings. 

Program MatrixMul of Chapter 6 is rewritten as Program 11.4 to use conformant-array parameters. Program 11. 7 passes different-length strings to a formal conformant-array parameter. 

## 1l.A.3 Recursive procedures 

The use of a procedure identifier within the text of the procedure itself implies recursive execution of the procedure. Problems whose definition is naturally recursive, often lend themselves to recursive solutions. An example is Program 11.5. 

The task is to construct a program to convert expressions into postfix form (Polish notation). This is done by constructing an individual conversion procedure for each syntactic construct (expression, term, factor). As these syntactic constructs are defined recursively, their corresponding procedures may activate themselves recursively. 

Given as data are the symbolic expressions: 

(a+b) * (c-d) a+b*c-d a * b)* c-d a+b* (c-d) a * a * a * a b+c*(d+c*a*a)*b+a 

