いい例じゃないけど、括弧を取るflattenなんかは
(define (flatten x)
 (if (list? x) (apply append (map flatten x))
   (list x)))
(flatten '(1 (2 (3 (4 5) () 6)) 7 (8 9)))
-> (1 2 3 4 5 6 7 8 9)

(append) -> () でいいと思う。

(append) から (append a) は定義できないんだろうけど。
(define (append2 x y)
 (if (null? x) y
   (cons (car x) (append2 (cdr x) y)))
(define (append . x)
 (cond ((null? x) '())
    ((null? (cdr x)) (car x))
    (else (append2 (car x) (apply append (cdr x))))))

>>223から変えた理由は
(let ((x '(9 8))) (eq? x (append x '()))) が
#f にならないといけないようなので。