Assignments in a program

### 12.4.2 Assignments in a program

Recall that the =< operator will change the value of a single entry in a list or matrix by reference (see Section 4.4.3). This make it efficient when changing many values, one at a time, in a list, as might be done by a program.

You must be careful when doing this, since your intent might be changed when a program is compiled. For example, if a program contains

local a;
a:= [0,1,2,3,4];
…
a[3] =< 33;

then in the compiled program, a:= [0,1,2,3,4] will be replaced by a:= [0,1,2,33,4]. To avoid this, you can assign a copy of the list to a; you could write:

local a;
a:= copy([0,1,2,3,4]);
…
a[3] =< 33;

Alternately, you could use a command which recreates a list every time the program is run, such as makelist or $, instead of copying a list; a:= makelist(n,n,0,4) or a:= [n$(n=0..4)] can also be used in place of a:= [0,1,2,3,4].