MIT Scheme 9.2 中 SICP 中的剩余程序是什么?

What is the equivalent of the rest procedure in SICP in MIT Scheme 9.2?

我正在进行练习 2.32,其中提供了以下代码:

(define (subsets s)
  (if (null? s)
      (list nil)
      (let ((rest (subsets (cdr s))))
        (append rest (map <??> rest)))))

当我尝试调用MIT Scheme 9.2中的rest过程时,它无法识别该过程(书中的nil也有类似的问题,被() 在现代 Scheme 中)。现代 Scheme 中等效的 rest 过程是什么?我不相信它是cdr,因为整本书都使用cdr

正如@tfb 指出的那样,此代码中的 rest 不是过程,而是本地绑定符号。

也许您误解了有关 rest 的错误消息;没见过,不好说。

你误解了这个练习 - rest 不是一个过程,是一个局部变量,它对应于子集的 rest(也许你应该采取查看关于 letdocumentation)。这就是这本书的要求:

(define (subsets set)
  (if (null? set)
      (list '())
      (let ((rest (subsets (cdr set))))
        (append rest
                (map (lambda (sets) (cons (car set) sets))
                     rest)))))