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(也许你应该采取查看关于 let
的 documentation)。这就是这本书的要求:
(define (subsets set)
(if (null? set)
(list '())
(let ((rest (subsets (cdr set))))
(append rest
(map (lambda (sets) (cons (car set) sets))
rest)))))
我正在进行练习 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(也许你应该采取查看关于 let
的 documentation)。这就是这本书的要求:
(define (subsets set)
(if (null? set)
(list '())
(let ((rest (subsets (cdr set))))
(append rest
(map (lambda (sets) (cons (car set) sets))
rest)))))