(define (f s) (lambda (x) (cons (car s) x)))
(define (subsets s)
  (if (null? s)
      (list '())
      (let ((rest (subsets (cdr s))))
        (append rest (map (f s) rest)))))
(subsets '(1 2))
(subsets '(a b c))
(subsets '(x y z w))
