drkcore

2008/02/02 17:13:18

letとlet*の違い

分かったような分からんような状態だったが。

gosh> (let ((x 2) (y 3))
(let* ((x 7) (z (+ x y))) ;; z -> 10 (x 7)
(* z x)))
70

gosh> (let ((x 2) (y 3))
(let ((x 7) (z (+ x y))) ;; z -> 5 (x 2)
(* z x)))
35

let, let*, letrecを読んで理解した。

ということは前者のほうも評価の順序を入れ替えてやれば、、、

gosh>  (let ((x 2) (y 3))
(let* ((z (+ x y)) (x 7)) ;; ここ変えた
(* z x)))
35

なるほど。

Comments