Вот моя реализация набора мощности (хотя я тестировал его только с использованием стандартного языка Racket, а не Beginning Student):
(define (powerset lst)
(if (null? lst)
'(())
(append-map (lambda (x)
(list x (cons (car lst) x)))
(powerset (cdr lst)))))
(Благодаря samth , чтобы напомнить мне, что flatmap называется append-map
в Racket!) [/ g2]
Я не знаю первоначальной причины, но, используя каждую неделю Smalltalk, я вижу множество преимуществ.