(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