(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
В отчете Scheme предполагается, что вы используете привязку для чего-либо.Таким образом, после того, как вы определили привязки 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