모든 부분집합을 가져오기위해서는
개별 부분집합과 나머지 요소의 결합을 만드는 것이 필요하다.
따라서 개별부분집합을 가져오는 (cdr list)로 구해지는 각각의 rest 요소를 (car list)와 결합하는 작업이 필요하다
그러므로 준 식의 빈 부분을 채우면
이 되어야한다.

개별 부분집합과 나머지 요소의 결합을 만드는 것이 필요하다.
따라서 개별부분집합을 가져오는 (cdr list)로 구해지는 각각의 rest 요소를 (car list)와 결합하는 작업이 필요하다
그러므로 준 식의 빈 부분을 채우면
(define (subsets s)
(if (null? s)
(list nil)
(let ((rest (subsets (cdr s))))
(append rest
(map
(lambda (n) (cons (car s) n)) rest)))))
이 되어야한다.
