Something just occurred to me with regard to call by name. There are no SETS
and USES attributes in an Algol 60 parameter declaration. If a parameter is
used as an l-value, there is a potential problem. A value like A[I} is
legitimate on either side of an assignment, but a value like A[I]+1 is valid
only on the right.
In languages with call by reference and with procedure parameters, this becomes
a non-issue: A[I]+1 is not a valid reference.
Shmuel (Seymour J.) Metz