Assignation in Algol 68 works with as follows: at the left side there
is a ref expression, whereas at the right side it is
expected to have a value of the referred mode. The name at the left
side is then made to refer to the value at the right side.
This works for any kind of value supported in the language, from plain values like integral or real numbers to structured or multiple values, and even routines:
age := 45;
name := "Jose";
person := ("Jose Marchesi", 45);
averages := (5.5, 5.6, 4.8, 3.9);
callback := (int n) int: n + 2
Now, stowed values are composed of further values, namely the elements
of a multiple value and the fields of a structured value. The
elements of a multiple can be accessed via slicing, like in
averages[2], and the fields of a structure can be accessed via
selection, like in age of person.
Names are not stowed values, however, and during the definition of the
language a problem became obvious: how would you modify part of a
multiple or a structured value? Suppose for example we want to adjust
the second average from 5.6 to 5.7. Given the name average we
could do it by:
{ Previous value was (5.5, 5.6, 4.8, 3,9) }
averages := (5.5, 5.7, 4.8, 3.9)
This sucked, of course, and any programmer would expect to be able to
just update the single element and be done with it. This led to the
introduction of sub-names: slicing or selecting a name,
which must be a ref to some stowed mode, yields a sub-name.
We can then simply use the resulting sub-name in an assignation:
averages[1] := 5.7
We say that the sliced or selected name, in this case averages,
is endowed with sub-names.
Of course, due to orthogonality, sub-names should be equivalent to “regular” names in every aspect: it shall be possible to pass them as parameters, etc. This is indeed the case, save for an obscure corner case involving sub-names of flexible names, which are somewhat restricted due to scope reasons, and such restrictions enforced by the syntax.
The endowment of subnames to stowed names, allowing them to be sliced and selected, and its fitting in the language came to be known as the bend, because it turned out very difficult to figure out, and formalize. As Charles Lindsey puts it:
Getting this correct in the syntax of selections and slices nearly drove the authors “round the bend”; hence, the title given to it.