Scheme让绑定语句

时间:2016-04-13 19:00:53

标签: scheme racket

以下是我的课程笔记:

(let ((x 2) (y 3))
  (let ((x 7) (z (+ x y)))
    (* z x)))

答案得出35.有人可以向我解释一下吗? 所以在第二行z(+ x y),x值似乎是2,但在那之后(* z x)x值是7?非常感谢

1 个答案:

答案 0 :(得分:4)

(let ((x 2) (y 3))

此处,第一个let仍然负责,直到所有值都被绑定。

  (let ((x 7) (z (+ x y)))

此处第二个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

希望它有所帮助。