В своем текущем состоянии function
просто возвращает пустой список, независимо от ввода . Тем не менее, звонит . Это выглядит как неудачная попытка реализовать функцию powerset
:
(define (powerset ls)
(if (null? ls)
'(())
(append (map (lambda (x) (cons (car ls) x))
(powerset (cdr ls)))
(powerset (cdr ls)))))
Можете ли вы заметить разницу? базовый случай в вашем коде неверен! Если вам интересно, powerset
возвращает набор всех возможных подмножеств списка:
(powerset '(1 2 3))
=> '((1 2 3) (1 2) (1 3) (1) (2 3) (2) (3) ())