(define (exercise-sample0 x) (let ((x 10) (y (+ x 5))) (* x y))) (define (exercise-sample1 x) (let* ((x 10) (y (+ x 5))) (* x y))) (define (exercise-1) (= (exercise-sample0 1) (exercise-sample1 1))) > (exercise-1) ; 実行 #f ; 結果
一方、 exercise-sample1 では、 let* が用いられている。 このため、始めの節の x の束縛は、 次の節の評価においてすでに有効であり、 y の束縛値の評価の中で現われる x は、 10 である。 結果、let の body 部 (* x y) の評価においては、 x: 10, y: 15, (* x y): 150 である。
よって、上述のように結果 false を返した。
99.10.6/ Tomio KAMADA: kamada@cs.kobe-u.ac.jp