(define combn
(lambda (lst n)
(println 'lst: lst 'n: n)
(cond ((< n 1) '())
((= n 1) (map list lst))
((null? lst) '())
(else (append (map (lambda (subset) (cons (car lst) subset))
(combn (cdr lst) (- 1 n)))
(combn (cdr lst) n))))))