スキームサブセット再帰問題
累乗関数の場合:
(define (p l)
(define (n next)
(if (null? next)
'()
(cons (car next)
(cons (cons (car l) (car next))
(n (cdr next))))))
(if (null? l)
'(())
(n (p (cdr l)))))
R5RS のみを使用して、すべてのセットを要素数の昇順で印刷し、同じサイズをソート順に印刷したいと思います。例えば、
このようなリストを定義すると
(define list3 (list '1 '2 '3))
関数を呼び出し、
(p'(1 2 3))
私の出力は
(() (1) (2) (1 2) (3) (1 3) (2 3) (1 2 3))
しかし、私は次のように印刷したい:
(() (1) (2) (3) (1 2) (1 3) (2 3) (1 2 3))
また、次の場合については、
(p'(1 2 3 4))
私の出力は次のとおりです。
(()
(1)
(2)
(1 2)
(3)
(1 3)
(2 3)
(1 2 3)
(4)
(1 4)
(2 4)
(1 2 4)
(3 4)
(1 3 4)
(2 3 4)
(1 2 3 4))
でも私はしたい
(()
(1)
(2)
(3)
(4)
(1 2)
(1 3)
(1 4)
(2 3)
(2 4)
(3 4)
(1 2 3)
(1 2 4)
(1 3 4)
(2 3 4)
(1 2 3 4))
正しい出力を行うにはどうすればよいですか?