我锻炼2.32呈现如下代码:当我尝试调用rest
过程中MIT方案9.2它不能识别的程序(也有类似的问题与nil
书中麻省理工学院计划9.2中SICP的剩余程序是什么?
(define (subsets s)
(if (null? s)
(list nil)
(let ((rest (subsets (cdr s))))
(append rest (map <??> rest)))))
,在现代化方案中由()
取代)。现代计划中的等效rest
程序是什么?我不相信它是cdr
,因为整本书都使用了cdr
。
在你给的代码中没有'rest'过程。 – tfb
注意:在旧的Scheme代码中,与pair相关的操作符有:'cons','car'和'cdr'。由于可以使用'cons'构建除列表之外的其他数据结构,因此不能确定'(cdr xs)'是一个列表 - 除非检查上下文。为了表明一个人在列表中工作,有些人使用函数'first'和'rest'而不是'car'和'cdr'。这个想法是,人们知道'(rest xs)'是一个列表 - 不管上下文是什么。最后:SICP是在这个约定的前几年写的,所以SICP的作者使用'car'和'cdr'。 – soegaard