我想声明要在其上进行操作的三个列表,但是使用“定义”它们的值不会改变。所以我以为我会用“ 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))))
答案 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被计算为自身)。