let:语法错误(缺少绑定对或主体)

时间:2019-07-08 16:50:39

标签: scheme

我想声明要在其上进行操作的三个列表,但是使用“定义”它们的值不会改变。所以我以为我会用“ lat”,但这给了我一个错误。

(let ((A '0)
      (B '0)
      (C '0)
      )
  )

我希望有3个列表,但这会给我这个错误:

let: bad syntax (missing binding pairs or body) in: (let ((A (quote 0)) (B (quote 0)) (C (quote 0))))

3 个答案:

答案 0 :(得分:1)

 
(let ((a 0) (b 0) (c 0))
  ;; a, b, c lives inside this let block
  (list a b c)) ;; a body of the let that makes a list (0 0 0)

;; a, b, c from the let block no longer exist 

方案报告希望您将绑定用于某些内容。因此,在定义let的绑定之后,可以预期其中至少有一个表达式可以执行某些操作。 let只是为此的语法糖:

;; anonymous lambda call
((lambda (a b c)
   (list a b c))  ;; body of the lambda that makes list (0 0 0)
 0 ; a
 0 ; b
 0); c

现在想象一下该怎么做:

;; anonymous lambda call
((lambda (a b c)
  ;; no body that does anything 
  )
 0 ; a
 0 ; b
 0); c

答案 1 :(得分:0)

您做对了,但是缺少代码

(let ((A '0)
      (B '0)
      (C '0)
      )
  you need code here
  )

答案 2 :(得分:0)

写没有主体的let与定义没有主体的lambda函数相同。

(let ((A '0)
      (B '0)
      (C '0)
      )
  )

和写作一样

(lambda(a b c) ) 0 0 0) ;; here it is not allowed to define function with no statement inside

('0被计算为自身)。