summaryrefslogtreecommitdiffstats
path: root/net/ricketyspace/sicp/two/thirtytwo.scm
blob: 31d644655efb3a040695901e3f4a31acc1e2b094 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
;;;; License: CC0-1.0

(define-module (net ricketyspace sicp two thirtytwo)
  #:export (subsets))

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

;;; Guile REPL
;;;
;;; scheme@(guile-user)> ,use (net ricketyspace sicp two thirtytwo)
;;; scheme@(guile-user)> (subsets '(1 2 3))
;;; $6 = (() (3) (2) (2 3) (1) (1 3) (1 2) (1 2 3))