Assignment

An assignment is an association of an identifier to a value. The statement,

> a := 6;
establishes an association between the identifier a and the value 6 (6 is said to be the value of a, or to be assigned to a). A collection of such assignments is called a context.

When a value V is assigned to an identifier I one of two things happens:

(1)
if I has not been previously assigned to, it is added to the current context and associated with V. I is said to be declared when it is assigned to for the first time.
(2)
if I has been previously assigned to, the value associated with I is changed to V. I is said to be re-assigned.

The ability to assign and re-assign to identifiers is why Magma is called an imperative language.

One very important point about assignment is illustrated by the following example. Say we type,

> a := 6;
> b := a+7;
After executing these two lines the context is [ (a,6), (b,13) ]. Now say we type,
> a := 0;
The context is now [ (a,0), (b,13) ]. Note that changing the value of a does not change the value of b because b's value is statically determined at the point where it is assigned. Changing a does not produce the context [ (a,0), (b,7) ].
V2.28, 13 July 2023