Assignment to Variables

A <#68028#><#43941#>set!<#43941#>-expression<#68028#>, also known as an <#68029#><#43942#>ASSIGNMENT<#43942#><#68029#>, has the following shape:
<#43947#>(set!<#43947#> <#43948#>var<#43948#> <#43949#>exp)<#43949#>
It consists of a variable, the <#43953#>left-hand side<#43953#>, and an expression, called <#43954#>right-hand side<#43954#>. The left-hand side of a <#68030#><#43955#>set!<#43955#>-expression<#68030#> is a fixed variable. In this book, we only use variables that are <#68031#><#43956#>define<#43956#><#68031#>d, either at the top-level or in a <#43957#>local<#43957#>-expression. A <#68032#><#43958#>set!<#43958#>-expression<#68032#> may occur wherever an expression is legal. The value of a <#68033#><#43959#>set!<#43959#>-expression<#68033#> is always the same and moreover invisible. It is therefore irrelevant. What matters about a <#68034#><#43960#>set!<#43960#><#68034#> expression instead, is the <#43961#>effect<#43961#> of its evaluation. Specifically, for the first step of the evaluation of a <#68035#><#43962#>set!<#43962#>-expression<#68035#>, we determine the value of <#68036#><#43963#>exp<#43963#><#68036#>. Let's say this value is <#68037#><#43964#>V<#43964#><#68037#>. For the second step, we change the definition of <#68038#><#43965#>var<#43965#><#68038#> to
<#43970#>(define<#43970#> <#43971#>var<#43971#> <#43972#>V)<#43972#>
The <#68039#><#43976#>EFFECT<#43976#><#68039#> of this second step is that from this point on, all references to <#68040#><#43977#>var<#43977#><#68040#> in an evaluation replace <#68041#><#43978#>var<#43978#><#68041#> by <#68042#><#43979#>V<#43979#><#68042#>. Its former value is lost. Understanding the true nature of assignments is difficult. We therefore first consider a simple though useless example.