次のスキームのための私のクラスのノートである:スキームのlet束縛文
(let ((x 2) (y 3))
(let ((x 7) (z (+ x y)))
(* z x)))
回答利回り35.誰かが私にこれを説明することはできますか? したがって、2行目のz(+ x y)ではx値は2のようですが、その後(x z)のx値は7ですか?おかげでたくさんの
次のスキームのための私のクラスのノートである:スキームのlet束縛文
(let ((x 2) (y 3))
(let ((x 7) (z (+ x y)))
(* z x)))
回答利回り35.誰かが私にこれを説明することはできますか? したがって、2行目のz(+ x y)ではx値は2のようですが、その後(x z)のx値は7ですか?おかげでたくさんの
おそらく、これを説明する簡単な方法は、匿名の手続き呼び出しのための構文としてsugarを使用することです。
(let ((x 2) (y 3))
(let ((x 7) (z (+ x y)))
(* z x)))
は同じです:
((lambda (x y)
((lambda (x z)
(* z x)) ; first here is x 7
7
(+ x y))) ; this x is from the outer
2
3)
(let ((x 2) (y 3))
ここで第一let
がバインドされているすべての値まで担当にまだあります。
(let ((x 7) (z (+ x y)))
ここで第2のlet
が担当します。
(* z x)))
あなたは(x 7)
が(z (+ x y))
で使用したい場合は、let*
TEST
(let ((x 2) (y 3))
(let ((x 7) (z (+ x y)))
(* z x)))
> 35
(let ((x 2) (y 3))
(let* ((x 7) (z (+ x y)))
(* z x)))
> 70
を試し、それがお役に立てば幸いです。