R6RS:翻訳:R6RS:1.4 Definitions

R6RS:翻訳:R6RS:1.4 Definitions

1.4 定義

let 式で束縛される変数は局所的である。束縛が let の本体部分だけで可視だからである。 Scheme では次のようにして識別子にトップレベルの束縛をつくることもできる。

(define x 23)
(define y 42)
(+ x y)         ⇒ 65

(これらは実際にはトップレベルプログラムやライブラリの「トップレベル」である。下の R6RS:翻訳:R6RS:1.12 Libraries 参照)

最初の括弧でくくられた構造ふたつは定義である。これにより束縛が作成され、 x が 23 に束縛され、 y が 42 に束縛される。定義は式ではなく、式の現れるべきところにはすべて現れることができない。さらに、定義は値を持たない。

束縛はプログラムの字句的構造に従う。同一の名前の束縛が複数存在した場合、出現場所を起点に内側から外側に見て、変数はそれに最も近い束縛を参照し、この方法で局所束縛の見つからない場合にはトップレベル束縛を参照する。

(define x 23)
(define y 42)
(let ((y 43))
  (+ x y))         ⇒ 66

(let ((y 43))
  (let ((y 44))
    (+ x y)))         ⇒ 67

Last modified : 2008/11/07 22:14:07 UTC