Initially, x is bound to the value 5 . Rather, we will need to change the value associated with x . To make variables assignable, we need to change what they stand for.
Boxes are a reasonable object to use here.
Since every use of a procedure is supposed to create a new copy of the body with all occurrences of the parameter replaced by the argument value, it is natural to create a box right after the argument is evaluated and to put the value of the argument into that box. At this point, there is no LC program we can write to distinguish this implementation of LC from the one we had before. Therefore, in this language, we cannot write a swap procedure. Then we have to pass references to variables a and b , not their value alone. Pascal and Fortran IV used variants of this parameter-passing technique.