Написание метода сглаживания в схеме

Я работал над следующей функцией flatten, и пока она работает только для списков. Мне было интересно, если кто-нибудь может дать мне некоторое представление о том, как заставить его работать с парами? Например (flatten '(a .a)) вернет (a a). Благодарю.

(define (flatten list)
   (cond ((null? list) null)
         ((list? (car list)) (append (flatten (car list)) (flatten (cdr list))))
         (else
          (cons (car list) (flatten (cdr list))))))

Ответы на вопрос(2)

Ваш ответ на вопрос