R6RS:翻訳:R6RS:1.8 Assignment

R6RS:翻訳:R6RS:1.8 Assignment

1.8 代入

定義や let、 lambda 式で束縛された Scheme の変数は、実際には個別の束縛に指定されたオブジェクトに直接束縛されているのではなく、これらのオブジェクトを格納している場所に束縛されている。こういった場所に格納されているものは代入を使って破壊的に変更することができる。

(let ((x 23))
  (set! x 42)
  x)         ⇒ 42

この場合、 let 式の本体は順次評価される式ふたつから構成され、最後の式の値が let 式全体の値になる。 (set! x 42) という式は代入で、「x の参照している場所のオブジェクトを 42 と置き換える」。したがって、 x の以前の値である 23 は 42 で置き換えられる。

More ...