Skip to content

Instantly share code, notes, and snippets.

(define (flatten lst)
(if (null? lst)
'()
(let ((a (car lst)) (d (cdr lst)))
(if (pair? a)
(append (flatten a) (flatten d))
(cons a (flatten d))))))
(define fringe flatten)
(define (subsets s)
(if (null? s)
(list '())
(let ((rest (subsets (cdr s))))
(append rest (map (lambda (x)
(cons (car s) x))
rest)))))